Как стать автором
Обновить
1
0

Программист

Отправить сообщение

Работа с файлами в C++ с использованием Boost

Время на прочтение9 мин
Количество просмотров38K
Привет! Я время от времени рассказываю на Хабре о решениях распространённых задач на C++ и вообще люблю делиться опытом. Поэтому даже написал целую книгу, которая называется «Разработка приложений на С++ с использованием Boost». Она может быть интересна разработчикам, которые уже немного знакомы со стандартной библиотекой языка, хотят глубже изучить Boost, упростить и повысить качество разработки приложений. Уверен, что информация, которую я собрал в книге, будет полезна — всё больше библиотек Boost становятся частью стандарта. Сегодня предлагаю прочитать главу, посвящённую работе с файлами. В ней я рассказываю о перечислении файлов в каталоге, стирании и создании файлов и каталогов, а также о самом быстром способе чтения. Надеюсь, будет интересно. И, пожалуйста, не забывайте делиться впечатлениями в комментариях.

UPD: добавил в конец поста бонус для читателей Хабра.
Читать дальше →
Всего голосов 33: ↑31 и ↓2+40
Комментарии25

Экзамен 1z0-819 Oracle Certified Professional: Java 11 Developer — заметки о сдаче

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


В начале октября Oracle упростил получение сертификации по Java — вместо двух экзаменов теперь нужно сдать один, при том что цена за экзамен не изменилась. Кому интересен уровень задач и больше подробностей про экзамен прошу под кат — опишу почему решил сдать, как готовился, какие вопросы были и собственно какие выводы сделал.
Читать дальше →
Всего голосов 3: ↑2 и ↓1+3
Комментарии3

Как программировать многоядерные микроконтроллеры

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


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


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

Читать дальше →
Всего голосов 47: ↑47 и ↓0+47
Комментарии17

Пишем на языке С/C++ в Linux под KolibriOS

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

Вступление


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


Данная статья — инструкция по настройке toolchain'а для Linux.

Читать дальше →
Всего голосов 12: ↑10 и ↓2+14
Комментарии8

Как выбрать HDMI-кабель? — Разбор

Время на прочтение5 мин
Количество просмотров135K
Вы когда-нибудь задавались вопросом что за странная ситуация с ценой на HDMI-кабели? На Яндекс.Маркете за трехметровый HDMI-кабель цена стартует с 131 рубля, а заканчивается проводом почти за полмиллиона! Понятно, что кабель за пол ляма — это какая-то единичная дичь.





Но есть масса вариантов за 10, 20, 30 тыс. И судя по описанию этих кабелей, каждый из них создан по космическим технологиям и обещается потрясающее качество изображения.

Так всё же. Влияет ли цена кабеля на качество изображения? Какие бывают стандарты HDMI кабелей? И какой HDMI-провод выбрать для 4K телевизора и консолей нового поколения?

Сегодня вместе с вами разбираемся в HDMI кабелях.

Давайте сразу расставим точки над i. HDMI — это цифровой интерфейс High Definition Multimedia Interface.
Всего голосов 57: ↑49 и ↓8+58
Комментарии130

Собеседование по Data Science: что могут спросить и где найти ответы на вопросы

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

Однажды я получил оффер от Deliveroo, в этой компании я должен был стать Data Science Manager. Пока я готовился к тому, чтобы приступить к выполнению своих обязанностей, оффер отозвали. У меня на тот момент не было подушки безопасности на случай продолжительного отсутствия работы. Я поделюсь с вами всем, что в итоге помогло мне получить сразу два оффера на должность Data Scientist от Facebook. Надеюсь, это поможет кому-то из вас выбраться из той сложной ситуации, в которой я оказался несколько месяцев назад.
Читать дальше →
Всего голосов 11: ↑10 и ↓1+18
Комментарии1

Установка OpenCV + CUDA на Windows

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

Введение


В данной статье речь пойдет о сборке и установке OpenCV 4 для C/C++, Python 2 и Python 3 из исходных файлов с дополнительными модулями CUDA 10 на ОС Windows.

Я постарался включить сюда все тонкости и нюансы, с которыми можно столкнуться в ходе установки, и про которые не написано в официальном мануале.

Читать дальше →
Всего голосов 20: ↑15 и ↓5+10
Комментарии3

Когда параллельные потоки буксуют

Время на прочтение9 мин
Количество просмотров11K
Мы давно уже живем в мире многоядерных процессоров и многозадачных приложений и знаем, что наиболее очевидным способом увеличения производительности является распараллеливание выполняемых задач на несколько потоков или процессов. Точнее настолько насколько позволяют, в первую очередь, ресурсы процессора. Однако, неискушенный или даже опытный разработчик может столкнуться с рядом подводных камней в, казалось бы, очевидной ситуации. В данной статье автор взял простейший код, замерил его производительность в одном потоке, распараллелил его, справедливо ожидая улучшения результатов, но что-то пошло не так…
Читать дальше →
Всего голосов 9: ↑5 и ↓4+5
Комментарии29

Nvidia представила новую версию одноплатного ПК Jetson Nano всего за $59

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

За последние несколько недель появилось сразу несколько отличных одноплатников. Только недавно вышел на рынок конкурент Raspberry Pi 4 c x86-процессором, а сейчас Nvidia представила еще одну альтернативу «малинке», только уже с уклоном в технологии искусственного интеллекта.

Называется новинка Jetson Nano, это уже вторая версия. Первая появилась в 2019 году и продавалась по цене в $99. Новый одноплатник практически такой же по функциональности, но дешевле — стоимость устройства составляет $59.
Читать дальше →
Всего голосов 33: ↑30 и ↓3+41
Комментарии39

Лучшие практики bash-скриптов: краткое руководство по надежным и производительным скриптам bash

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

Shell wallpaper by manapi

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

Команда Mail.ru Cloud Solutions перевела статью с рекомендациям, благодаря которым вы сможете лучше писать, отлаживать и поддерживать свои сценарии. Хотите верьте, хотите нет, но ничто не может сравниться с удовлетворением от написания чистого, готового к использованию bash-кода, который работает каждый раз.

В статье автор делится тем, что узнал за последние несколько лет, а также некоторыми распространенными ошибками, которые заставали его врасплох. Это важно, потому что каждый разработчик программного обеспечения в определенный момент своей карьеры работает со сценариями для автоматизации рутинных рабочих задач.
Читать дальше →
Всего голосов 40: ↑38 и ↓2+54
Комментарии70

Основы линейной регрессии

Время на прочтение13 мин
Количество просмотров183K
Здравствуй, Хабр!

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

! Осторожно, трафик! В статье присутствует заметное число изображений для иллюстраций, часть в формате gif.
Читать дальше →
Всего голосов 18: ↑18 и ↓0+18
Комментарии38

Создаём приложение на gtk

Время на прочтение3 мин
Количество просмотров11K
Я вижу часто отсылки на то, как реализуется то или иное на qt, но gtk тоже хорош. Я пишу на C и не хочу учить каждые три года стандарты C++, чтобы быть на волне. Мне хватает простой сишечки и чтобы делать графический софт, выбор пал на gtk.
Читать дальше →
Всего голосов 26: ↑19 и ↓7+21
Комментарии31

Как заставить код выполняться за одинаковое время? Способы от Яндекс.Контеста

Время на прочтение5 мин
Количество просмотров12K
Недавно мы объявили на Хабре, что начинаем принимать заявки на Яндекс.Алгоритм и другие треки чемпионата по программированию Yandex Cup. Уже много лет онлайн-соревнования Яндекса и других компаний проходят на платформе Контест. Меня зовут Павел Тыквин, я один из разработчиков Контеста. Основная задача нашей платформы — получить от участника чемпионата исходный код решения, скомпилировать и запустить этот код, прогнать тесты и вернуть результат. Звучит не очень сложно. Давайте попробуем.

int main()
{
	int n = 500000000;
	int *a = new int[n + 1];
	for (int i = 0; i <= n; i++)
		a[i] = i;
	for (int i = 2; i * i <= n; i++)
	{
		if (a[i]) {
			for (int j = i*i; j <= n; j += i) {
				a[j] = 0;
			}
		}		
	}
	delete[] a;
	return 0;
}
Читать дальше →
Всего голосов 51: ↑49 и ↓2+68
Комментарии48

Технология FPGA для тысячи применений

Время на прочтение4 мин
Количество просмотров63K
Трудно представить другую технологию, которая настолько разносторонняя как FPGA.
FPGA — Field-Programmable Gate Array, то есть программируемая логическая матрица (ПЛМ), программируемая логическая интегральная схема (ПЛИС). Это технология, при которой создается микросхема с набором логических элементов, триггеров, иногда оперативной памяти и программируемых электрических связей между ними. При этом программирование FPGA оказывается похоже на разработку электрической схемы, а не программы. Пользуюсь данной технологией давно и попробую описать самые полезные с моей точки зрения применения по мере их усложнения.

1. Помощь при разводке плат


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


И все это благодаря возможности внутренней перекоммутации сигналов внутри FPGA.
Читать дальше →
Всего голосов 24: ↑14 и ↓10+12
Комментарии37

Check Point: оптимизация CPU и RAM

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

Здравствуйте, коллеги! Сегодня я хотел бы обсудить очень актуальную для многих администраторов Check Point тему «Оптимизация CPU и RAM». Нередки случаи, когда шлюз и/или менеджмент сервер потребляют неожиданно много этих ресурсов, и хотелось бы понять, куда они “утекают”, и по возможности грамотнее использовать их.

1. Анализ


Для анализа загрузки процессора полезно использовать следующие команды, которые вводятся в экспертном режиме:
Читать дальше →
Всего голосов 15: ↑14 и ↓1+13
Комментарии3

Мьютекс в мире асинхронного кода

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

failed guard


Фото: James P. Blair/National Geographic Creative


Вы когда-нибудь сталкивались со следующей проблемой в rust, когда использовали std::sync::Mutex в асинхронном коде?


 7  |     tokio::spawn(/* some future here */);
    |     ^^^^^^^^^^^^ future returned by `fut` is not `Send`
    |
127 |         T: Future + Send + 'static,
    |                     ---- required by this bound in `tokio::task::spawn::spawn`
    |
Читать дальше →
Всего голосов 16: ↑16 и ↓0+16
Комментарии2

Разработка драйвера PCI устройства под Linux

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

В данной статье я рассматриваю процесс написания простого драйвера PCI устройства под OC Linux. Будет кратко изучено устройство программной модели PCI, написание собственно драйвера, тестовой пользовательской программы и запуск всей этой системы.

В качестве подопытного выступит интерфейс датчиков перемещения ЛИР940/941. Это устройство, отечественного производства, обеспечивает подключение до 4 энкодеров с помощью последовательного протокола SSI поверх физического интерфейса RS-422.
Всего голосов 101: ↑101 и ↓0+101
Комментарии33

Детектор приседаний на OpenCV и Tensorflow

Время на прочтение5 мин
Количество просмотров10K
В эпоху заточения хорошо заниматься физкультурой, но вот беда — не все домашние с этим согласны, так что приходилось прикладывать некоторые усилия. Работать надзирателем однако хотелось не очень, потому как надо было собственно работать, а пущеный на самотек спортивный процесс, наблюдаемый в лучшем случае одним глазом, заимел тенденцию скатываться в халяву.

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

Начать было решено с приседаний. Фундаментальное движение, с явными состояниями, большой амплитудой, в общем, идеальный выбор.
Читать дальше →
Всего голосов 23: ↑23 и ↓0+23
Комментарии20

Алгоритм подавления полос на изображении как инструмент улучшения качества томографической реконструкции

Время на прочтение5 мин
Количество просмотров2.6K
Вернемся к томографии, которой у нас в Smart Engines уделено большое внимание. Сегодня мы расскажем про алгоритм уменьшения выраженности полос на изображении. Полосы на томографической синограмме никому бы не мешали, ведь синограммы не предъявляются врачам или другим пользователям томографов, но эти полосы приводят к появлению концентрических окружностей на восстановленных изображениях (слева на рисунке). Основным инструментом борьбы с полосами в предлагаемом алгоритме является операция ведомой фильтрации (Guided Filtering). Мы расскажем как построить ведущее изображение для синограммы, рассчитать скорректированную синограмму и использовать ее в процедуре томографической реконструкции, чтобы получить восстановленное изображение без кольцевых артефактов (справа на рисунке).

Читать дальше →
Всего голосов 8: ↑8 и ↓0+8
Комментарии15

CSS-функции min(), max() и clamp()

Время на прочтение12 мин
Количество просмотров67K
Поддержка CSS-функций сравнения min(), max() и clamp() появилась в Firefox 8 апреля 2020 года. Это означает, что данные функции теперь поддерживаются во всех основных браузерах. Эти CSS-функции расширяют наши возможности по созданию динамических макетов и по проектированию более гибких, чем раньше, компонентов. Их можно использовать для настройки размеров элементов-контейнеров, шрифтов, отступов и многого другого. Правда, веб-дизайнеру, создающему макеты страниц с учётом возможности использования этих восхитительных функций, может понадобиться научиться думать по-новому.



Сегодня я хочу рассказать об особенностях этих функций, объяснить всё то, что может оказаться в них непонятным, и привести практические примеры их использования.
Читать дальше →
Всего голосов 24: ↑23 и ↓1+35
Комментарии11

Информация

В рейтинге
Не участвует
Откуда
Ontario, Канада
Зарегистрирован
Активность

Специализация

Software Developer, R&D developer
Linux
C
Bash
C++
Python
English
Matlab
Maths
Computer vision
OpenCV