Pull to refresh
74
0.1
Роман @RomeoGolf

инженер-программист

Send message

Профилировка производительности и памяти с разных углов обзора

Reading time4 min
Views14K

Выбор инструмента


image

Проблема профилировки рано или поздно встает перед любым проектом, претендующим на роль лучшего в своей области. Какой инструмент выбрать — всегда большой вопрос. Одни инструменты показывают одну часть картины, другие другую. И рано или поздно начинаешь писать свой тул (англ. tool — орудие\инструмент), который отвечает на насущные проблемы именно данного конкретного проекта. Однако время на написание своего «орудия» всегда приходится вычитать из времени отведенного на сам проект.
Поэтому серьезный профайлер написать не получается…

Но как получить все и сразу? (Тут мне почему то вспоминается песня Queen «I want it all»)
Читать дальше →
Total votes 15: ↑11 and ↓4+7
Comments4

Оптимизация GUI на Qt

Reading time12 min
Views13K

Как правило, при создании desktop-приложений на платформе Qt не возникает проблем, связанных с медленностью работы GUI. Qt – платформа достаточно надежная, неплохо вылизанная по всем параметрам, в том числе и по скорости работы. Однако всё же иногда бывают ситуации, когда из-за обилия виджетов графический интерфейс немного притормаживает, и это печально). В этой статье я приведу один частный пример простого графического интерфейса и покажу, как за два шага можно сначала ускорить его в 11 раз, а потом и в целых 34 раза. Вдобавок к этому, я постараюсь немного осветить механизм принятия решения для таких оптимизационных задач, постараюсь показать направление мыслей для правильного решения. Поехали!

Читать далее
Total votes 17: ↑17 and ↓0+17
Comments23

Поделить нельзя — умножить или алгоритм быстрого деления по методу Ньютона-Рафсона

Level of difficultyMedium
Reading time9 min
Views7.6K


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

В этот раз хочется поговорить о другом методе, сводящем деление к умножениям и битовым сдвигам, основанном на методе поиска корней функции.
Смотреть код, формулы и анимации
Total votes 38: ↑37 and ↓1+57
Comments33

Как сделать и настроить собственный VPN

Level of difficultyEasy
Reading time6 min
Views45K

В статье рассмотрим четыре способа создания собственного VPN. Начнем с самого простого варианта, что под силу даже начинающим пользователям ПК.

Читать далее
Total votes 35: ↑34 and ↓1+40
Comments76

Как извлечь данные из Linux с помощью C++ и Qt. На примере приложения с прогнозом погоды

Level of difficultyMedium
Reading time10 min
Views4K

Привет, Хабр! Меня зовут Михаил, я backend-разработчик в SimbirSoft. Хочу поделиться с вами опытом получения различной информации в ОС Linux для использования в своих целях.

Представьте, что нам нужно написать приложение «Погода», которое берёт из сети температуру, влажность и прочие параметры и отображает для пользователя. Было бы неплохо, чтобы оно само определяло, где мы находимся. Но как это сделать? Легко!

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

- навигационные данные (долготу, широту, высоту);

- сведения о сетевом соединении (название, тип, уровень сигнала Wi-Fi);

- заряд батареи;

- информацию о хранилище (сколько занято/сколько всего).                                                                  

Стек используемых технологий – C++ в связке с библиотекой Qt (5.12). Задача казалась довольно простой. Но первое впечатление очень часто обманчиво. Особенно в тех случаях, когда вам не приходилось решать подобные задачи. Но обо всём по порядку. Рассмотрим вывод разных видов информации.

👉 Читать далее
Total votes 4: ↑4 and ↓0+6
Comments6

Мультитул для разработчика электроники

Level of difficultyEasy
Reading time12 min
Views20K

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

Идея понятна - заменить генераторы частоты, терминалы RS-485 и CAN одним самодостаточным прибором. В этой статье расскажу о том, что за девайс я собрал.

Читать далее
Total votes 32: ↑30 and ↓2+40
Comments16

lnav — супернедооценённый инструмент для работы с логами

Reading time6 min
Views14K

Доброго дня. Это мой первый пост на хабре, поэтому не будьте особо строги к нему.

В мире разработки, системного администрирования и DevOps не смотря на то, что давно существуют и заняли свою нишу инструменты, связанные с централизованным сбором, визуализацией и анализом логов (graylog, ELK/EFK, loki, loggly и другие), всё ещё существует необходимость периодически взять шашку в руки и поработать со старыми/добрыми (а может быть и не очень добрыми) текстовыми логами. За 21 год своей деятельности я успел побыть системным администратором, DevOps инженером, разработчиком, CTO и системным аналитиком, но необходимость периодической работы с логами неизменно присутствовала в том или ином виде всегда. Это может быть разбор вывода нового сервиса или контейнера на машине разработчика, что-то, что ещё не успели завести (или сознательно по каким-либо причинам не завели) на централизованную систему сбора логов или, например, сервис, временно включенный в режиме debug для поиска причин проблемы. Ситуаций бывает много и ситуации бывают разные, а текстовые логи были, есть и ещё долго будут с нами.

Все, кто как-либо связан с DevOps знают про такие утилиты как more, less, tail, head, grep, sed, awk (а кто-то и ещё десяток более специфичных) и при необходимости их используют, но из тех, с кем я общался, никто не подтвердил мне, что знает про lnav. Я и сам не знал и искал нечто подобное более десяти лет. lnav — это не просто швейцарский армейский нож в мире работы с логами, а целый космический корабль, на котором можно улететь в соседнюю галактику. Мой мир разделился на "до" и "после" знакомства с этой утилитой. Там, где раньше требовались часы, а то и десятки часов на анализ логов, теперь хватает считанных минут.

Читать далее
Total votes 45: ↑45 and ↓0+62
Comments20

Как убить единорога или попытка навести порядок с инициализацией переменных в языке C++

Level of difficultyMedium
Reading time15 min
Views5.3K

Знаете, я никогда не задумывался, насколько плоха или хороша инициализация переменных в языке C++. Я просто использовал ее. И не имел никаких проблем. Но недавно я посмотрел пару видео, пролистал несколько статей и да, я должен признать… она действительно ужасна. Один очень серьезный человек даже сказал, что мы, как сообщество программистов, виновны в том, что C++ не настолько хорош, насколько он мог бы быть.

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

Читать далее
Total votes 11: ↑6 and ↓5+4
Comments33

В поисках оптимальной модели итераторов

Reading time7 min
Views3.3K

В процессе разработки мини-библиотеки файлового ввода я изучал код реализации функций/методов работы с файлами в стандартных библиотеках различных языков программирования, в том числе и Rust.

Глаз зацепился за реализацию итератора чтения файла по строкам. Для реализации итератора в Rust достаточно определения всего одной функции next()!
Это маленькое открытие сподвигло меня к изучению того, как реализованы итераторы в других языках программирования.

В данной статье я поделюсь результатами этого небольшого исследования, а также представлю новую модель итераторов, которую я планирую сделать основной для языка 11l, и которую можно уже сейчас использовать в C++ проектах посредством простого адаптера (вот пример использования).
Читать дальше →
Total votes 11: ↑5 and ↓6+3
Comments10

Накрутил опыт и не вывез

Level of difficultyEasy
Reading time5 min
Views6K

Сейчас довольно тяжело устроиться в IT, если ты новичок. Это уже ни для кого не секрет. Есть много историй, где люди годами ищут первую работу, откликаются на тысячи вакансий и даже не имеют шансов просто попасть на собеседование.

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

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

Читать далее
Total votes 31: ↑17 and ↓14+5
Comments54

Как схема 500-30-5 делает учебные центры IT-компаний бесполезными

Level of difficultyEasy
Reading time7 min
Views55K

Качественные кадры всегда были актуальным вопросом для IT. И с каждым годом ситуация не становится лучше - высшее образование все больше отстает от потребностей рынка, а массовое онлайн-образование дало количество, но не качество.

IT-компании вполне обоснованно жалуются на недостаток квалифицированных специалистов.  

Но когда сами компании начинают готовить кадры “под себя”, то делают это крайне малоэффективно.

Читать далее
Total votes 30: ↑25 and ↓5+26
Comments69

Как я собрал солнечную станцию своими руками: детальный обзор компонентов и процесса сборки

Level of difficultyMedium
Reading time7 min
Views12K

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

В статье он рассказал, почему решил сделать именно солнечную станцию, и детально расписал основные её части, а ещё объяснил, что понадобится для сборки. Из последней части вы узнаете, как собрать подобный источник энергии. Спойлер: он прошёл испытания и отлично работает. 

Читать далее
Total votes 38: ↑35 and ↓3+37
Comments48

Обзор вело-гаджетов: рулевая сумка с солнечными панелями и нагрудная сумка-регистратор

Reading time5 min
Views1.3K

Всем привет!

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

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

Обзор LSP: что это такое, зачем нужно, как работает

Level of difficultyMedium
Reading time15 min
Views3.2K

Представьте: у вас есть N редакторов или IDE и M языков программирования. Получается, что для их корректной работы вам необходимо поддерживать N*M плагинов. Но что, если таких редакторов и языков много?.. Решением может стать LSP — единый интерфейс взаимодействия языкового сервера и редакторов, который помогает сузить проблему до N+М.

Меня зовут Денис Маматин, я работаю в отделе R&D СберТеха. Наша команда занимается разработкой и тестированием новых технологий. В этой статье я расскажу, что такое LSP‑протокол, как он поможет упростить разработку, и рассмотрю небольшой пример LSP‑сервера.

Читать далее
Total votes 16: ↑15 and ↓1+22
Comments1

Анализ, декомпозиция и оценка задач: от теории к практике

Level of difficultyEasy
Reading time13 min
Views4.5K

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

Меня зовут Максим, и я более 6 лет работаю Frontend-разработчиком в IT-проектах и продуктах. За это время я насмотрелся на разные подходы к управлению задачами — от полного хаоса до сверхжёсткого контроля. И знаете что? Ни одна из крайностей не работает хорошо.

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

Но давайте начнем с типичной ситуации в мире разработки...

Читать далее
Total votes 7: ↑7 and ↓0+9
Comments6

Языки программирования, которые могут заменить C++ — Rust, Go, Swift, Carbon

Reading time11 min
Views9.5K

Язык программирования C++, на котором написано 95% существующего программного обеспечения, был создан Бьерном Страуструпом, датским инженером со странноватой прической, в далеком 1985 году — очень давно!

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

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

Читать далее
Total votes 14: ↑8 and ↓6+6
Comments72

Launcher для GoodbyeDPI – понятный способ обойти все блокировки и восстановить YouTube в России

Level of difficultyEasy
Reading time2 min
Views252K

Сейчас опишу интуитивно понятный способ восстановления работоспособности YouTube и обхождения любых блокировок провайдера на Windows компьютере. Уверен, что статью по указке РКН быстро удалят, так что если тема вам интересна, дочитайте до конца, сразу скачайте себе программу, даже если планируете использовать после. Заносить в закладки особого смысла нет. Ну и ставьте лайк. Отдельно также следует повысить карму ValdikSS - Пользователь / Хабр (habr.com) автору уникального решения GoodbyeDPI, который публиковал статью с описанием своего решения пару недель назад тут: Автономный способ обхода DPI и эффективный способ обхода блокировок сайтов по IP-адресу, теперь там банер РКН и слова «Эта интернет-страница удалена из публичного доступа по юридическим причинам».

Я не буду заново описывать техническое решение GoodbyeDPI, кратко это программа (или служба ОС Windows) позволяющая обнаруживать «заглушки» созданные провайдерами по указанию РКН для блокировки небогоугодных сайтов. Программа бесплатно распространяется на GitHub, является консольной утилитой мало понятной рядовому пользователю. Полное описание и ссылки есть на NNMClub ⚡ Автономный способ обхода DPI и эффективный способ обхода блокировок сайтов по IP-адресу. GoodbyeDPI и ReQrypt + Blockcheck – ресурс, конечно же, заблокирован у вас, если еще не установлен какой-либо способ обхода блокировок.

Сейчас появилось решение в виде графической оболочки для GoodbyeDPI, которое на русском языке позволяет в пару кликов решить проблемы медленного YouTube и не работающих сайтов. Решение Launcher for GoodbyeDPI, это простое окошко настройки к GoodbyeDPI, который также идёт в комплекте. Скачивайте с сайта автора, или с моего зеркала.

Восстановите YouTube и запрещенные сайты
Total votes 204: ↑191 and ↓13+213
Comments176

Решаем проблему блокировок (и YouTube) за 5 минут на роутере Mikrotik через контейнеры и без VPN

Level of difficultyMedium
Reading time8 min
Views119K

Всем привет! Это моя первая статья на хабре, которая точно кому-то пригодится в данное время. Здесь я расскажу как ускорить ютуб и разблокировать доступ к некоторым заблокированным ресурсам прямо на роутере Mikrotik и без VPN.

В моем случае используется MikroTik hAP ax3. Стоит упомянуть, что подойдут только роутеры с архитектурой ARM, ARM64 или x86 (CHR), которые и поддерживают контейнеры.

Кто подходит под эти условия, велком под кат)

Читать далее
Total votes 102: ↑102 and ↓0+119
Comments177

Как организовать продуктивную четырёхдневную рабочую неделю?

Reading time14 min
Views5.9K

Сто лет назад экономисты и философы предполагали, что к 2000 году в промышленно развитых странах продолжительность рабочего дня будет составлять всего 4 часа. И, хотя мы прошли долгий путь от длинного 12-14-часового рабочего дня в первой половинк XIX века, мы всё ещё даже не приблизились к этому прогнозу.

Более того, мне кажется, что большинство людей чувствуют себя так, будто они работают больше, чем когда-либо.

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

Правда в том, что мы можем работать меньше часов. Просто большинство компаний предпочитают этого не делать.

В этой статье на примере опыта компании Planio рассмотрим преимущества и особенности перехода на четырёхдневную рабочую неделю.

Читать далее
Total votes 27: ↑26 and ↓1+31
Comments22
1
23 ...

Information

Rating
3,730-th
Location
Свердловская обл., Россия
Date of birth
Registered
Activity