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

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

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

Фриланс. Как начать? С чего? Где взять первый заказ?

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

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

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

Фриланс. Юридическая и финансовая сторона

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

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

Читать все
Всего голосов 7: ↑3 и ↓4-1
Комментарии14

Моя большая практическая шпаргалка SQL (SQLite) с готовыми запросами

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

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

Публикую шпаргалку по SQL, которая долгое время помогала мне, да и сейчас я периодически в неё заглядываю.

Все примеры изначально писались для СУБД SQLite, но почти всё из этого применимо также и к другим СУБД.

Здесь есть и примеры довольно сложных запросов с агрегирующими функциями, триггерами, длинными подзапросами, с оконными функциями. Помимо этого, часть примеров посвящена работе с SQL в Python, используя sqlite3, pandas, polars. Этот список запросов с комментариями можно использовать как наглядное пособие для изучения SQL.

Читать далее
Всего голосов 125: ↑122 и ↓3+119
Комментарии7

Прокачиваем навыки в сфере ML — что изучать в 2024-м

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

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

Ритейл, банки, технологические предприятия, компании-разработчики и все те, кто собирает большие массивы неструктурированных данных, для запуска сложных моделей могут использовать вычислительные ресурсы облака. Например, строить нейросети с помощью ML-платформы или использовать объектное хранилище для обработки Big Data.

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

Читать далее
Всего голосов 23: ↑20 и ↓3+17
Комментарии0

Оптимальный путь новичка в мире C++/Qt

Время на прочтение10 мин
Количество просмотров100K
Часто задаваемый начинающими программистами вопрос – какие материалы читать для повышения своего профессионального уровня? В таком, наиболее общем виде, ответить на данный вопрос невозможно. Это зависит от текущих знаний и умений человека, от его специализации, от задач, которые возникнут перед ним в будущем. Однако я попытаюсь ответить на данный вопрос для того направления программистской деятельности, в котором лучше всего разбираюсь – в создании кроссплатформенных сложных desktop-приложений. Приложений уровня и класса PhotoShop, VisualStudio, MS Word. Таких приложений, в которых с точки зрения программиста возникает больше количество разноплановых задач:

  • Отрисовка классического «офисного» GUI типа кнопок, прогресс-баров, виджетов, анимации.
  • Отрисовка любой нестандартной графики типа непрерывно движущихся графиков из миллионов точек.
  • Работа с базами данных
  • Работа с сетью
  • Работа с реестром операционной системы
  • Работа с принтером
  • Быстрое (в том числе параллельное) выполнение сложных вычислительных задач.
  • И многое, многое другое.

Наборов платформ и фреймворков, которые позволяют эффективно строить подобные приложения, не так уж много. В свое время, попробовав разные платформы, программисты в моей организации уверенно остановились на следующей связке: язык С++ и платформа Qt. Как показало время, этот выбор не подвел. Вот именно с оглядкой на этот выбор я начну излагать тот набор материалов, которые я рекомендую к изучению начинающими программистами, если они хотят стать настоящими гуру в этом направлении.
Читать дальше →
Всего голосов 15: ↑14 и ↓1+13
Комментарии21

5 диаграмм, необходимых для документирования архитектуры решений

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

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

Читать далее
Всего голосов 28: ↑27 и ↓1+26
Комментарии3

Не Unity единым…

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

Игры бывают разные, большие и маленькие, триA и супер инди, в компаниях с сотнями разработчиков и что создаются самородками-одиночками. Редко их делают с нуля и пишут код только игры, чаще пишут игровые тулы, редактор и параллельно пишут саму игру. За всей этой многомиллиардной индустрией стоит код, много кода, очень много кода. Игровые движки и фреймворки – мощные инструменты, которые помогают разработчику творить его идеи и создавать увлекательные игровые миры. Это каркас, на котором строятся все игровые вселенные, они включают в себя сотни инструментов, библиотек и ресурсов, позволяя разработчикам превратить строчки кода в театр для одного зрителя.

Существует более сотни игровых движков, каждый из них содержит как минимум одну фичу которой нет ни в каком другом. Всех возможностей вместе нет ни в одном, и это прекрасно - иначе бы такой движок монополизировал рынок. Хм, Unreal5 ты ли это? Иногда полезно пробежать по release notes движка, чтобы оставаться в курсе последних новостей. Возможно вы разрабатываете свое решение и эта статья натолкнет вас на новые идеи. Готовы узнать что ваша любимая игры была сделана не на Unity, а на православном SDL?

Читать далее
Всего голосов 95: ↑95 и ↓0+95
Комментарии89

Опыт создания UI библиотеки на C++

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

Началось все почти два года назад в декабре, практически перед новым годом.

Наш основной проект (видео мессенджер) использовал WTL для Windows и GTKmm для Linux. Поддержки мака не было. Огромной неприятностью было тащить два идентичных клиента, которые, по идее, должны делать все строго одно и тоже. Разумеется, это никогда не получалось. От мысли что надо бы сделать ещё один нативный клиент для мака начинался нервный тик...

На резонный вопрос - почему сразу делалось не на Qt могу лишь ответить, что это связано с, так скажем, гурманскими предпочтениями и, отчасти, с любовью к монолитным exe. Да и не требовалось на старте ничего кроме винды.

В течении шести лет жизни с двумя кодовыми базами одного и того же, неспешно подбирались легковесные UI библиотеки написанные хотя бы в стиле C++11.

Надо сказать, что мы активно используем boost и всей душой, как можем, его любим...

В 2021 году видимо Гугл работал плохо или звёзды так сошлись, но не нашлось ничего стоящего. Все что попадалось - основанные на рендеринге html проекты и обертка над wxWidgets. Сейчас то мы знаем про lvgl, да...

wxWidgets не плох, но хотелось своего рисования, без окошек под кнопки, поля ввода и списки, boost/bsd подобной лицензией, максимально лаконичной, и в идеале работающей от Windows XP / CentOS 6 на стандартном GDI / X11 до Vulcan на современных машинах.

В итоге, все же было принято волевое решение сделать минимальный UI фреймворк для этого проекта, и сразу выпускать его в Open Source под лицензией boost. 

Читать далее
Всего голосов 34: ↑32 и ↓2+30
Комментарии50

Решение любопытной цепочки задач c leetcode или сеанс древней алгоритмической магии с последующим разоблачением

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

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

Читать далее
Всего голосов 12: ↑12 и ↓0+12
Комментарии41

Как собрать нативную библиотеку для Android

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

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


image

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

Использование Docker для сборки и запуска проекта на C++

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

В этой публикации речь пойдет о том, как выполнить сборку C++ проекта, использующего GTest и Boost, при помощи Docker. Статья представляет собой рецепт с некоторыми поясняющими комментариями, представленное в статье решение не претендует на статус Production-ready.


Зачем и кому это может понадобиться?


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


Эта статья будет особенно полезна начинающим разработчикам, кому необходимо выполнить базовую настройку окружения для сборки и запуска C++ проекта.


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

Читать дальше →
Всего голосов 22: ↑18 и ↓4+14
Комментарии11

Собираем статическую библиотеку через CMake под Android

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

Являясь не Android разработчиком, но имея хорошие базовые знания в Java, мне выпала небольшая research задача под Android платформу, для решения которой нужно было интегрировать стороннюю с/c++ библиотеку в Android Studio проект. В данном статье будет:


  • пошаговое описание как собрать c/c++ проект, который корректно настроен под CMake систему сборки
  • интеграция полученной библиотеки в Android проект через Android Studio

Введение


Поиск по ключевым словам в русскоязычном сегменте интернета на удивление дал мало результатов на данную тему. Но нашлась единственная довольно подробная статья на хабре https://habr.com/ru/company/e-Legion/blog/487046/, с которой вы заметите как сходства, так и различия. Для сравнения подходов решил так же для примера использовать проект с открытым исходным кодом https://opus-codec.org, что и в указанной статье. Система на которой будут выполняться все эксперименты MacOS Big Sur имея на борту cmake версии 3.19.3.


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

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

Как писать на Objective-C в Linux (с использованиям системы сборки CMake и автодополнением)

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

Запускаем Objective-C на Linux.

Читать далее
Рейтинг0
Комментарии4

Используем GYP для сборки С/C++ проекта

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

Введение


На хабре уже несколько раз упоминалась система генерации скриптов сборки и проектных файлов CMake. Система достаточно популярна и неплохо документирована. Не все знают, что есть неплохая альтернатива этой (безусловно, замечательной) системе. Да, речь в статье пойдёт о проекте Generate Your Project (GYP).

Предыстория


GYP разрабатывался для сборки конкретного проекта — браузера Chrome/Chromium. Решение разрабатывать свой инструмент вызвало множество споров, многие не понимали (возможно, до сих пор не понимают), зачем изобретать свой «велосипед». Тем не менее, GYP стал довольно популярным инструментом, и сейчас он используется за пределами инфраструктуры Chromium, например, для сборки V8 и нативных модулей NodeJS.
Читать дальше →
Всего голосов 10: ↑10 и ↓0+10
Комментарии10

Непрерывная интеграция (CI) для GitHub проектов на С/C++ с CMake-сборкой

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

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


Данная статья — инструкция по прикручиванию базовой непрерывной интеграции (build-test-deploy) к гитхабовским C/C++ проектам с CMake сборкой — по непонятным причинам, на Хабре такого до сих пор не проскальзывало. Впрочем, если моё гугл-фу подвело меня, и таки проскальзывало — не беда. Лишний туториал, описывающий всё под несколько другим углом и предостерегающий от неповторимого набора набитых автором шишек, совершенно точно не повредит.

Читать дальше →
Всего голосов 20: ↑19 и ↓1+18
Комментарии12

Как начать работать с IPv6 там, где его нет (часть 1)

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


Появлением на свет этот материал обязан переводу статьи IPv6 — это катастрофа (но поправимая) (автор Mathew Duggan) и является её логическим продолжением. Если вы живёте в небольшом городе, которого в том числе нет в этом списке, и ваш провайдер в него не входит, то велика вероятность, что просто так взять и начать по-настоящему (за пределами lan) работать с IPv6 не получится. Некоторых стран СНГ это касается в полной мере, где целые государства не имеют для этого необходимого интеллектуального и материального ресурса. Однако исследовательский интерес толкает человечество вперёд, поэтому в статье будут описаны стратегии, как получить и настроить IPv6 на различных, в том числе мобильных устройствах там, где его нет, используя возможности брокеров. В материале скомпилированы разные подходы, чтобы читатель мог реализовать подходящий вариант. Если у вас ещё имеются сомнения, нужно ли это вообще, то рекомендую почитать мотивационную статью, ссылка на которую приведена выше.
Читать дальше →
Всего голосов 42: ↑42 и ↓0+42
Комментарии44

Как мы анализируем потребление памяти нативными приложениями (C++, Windows, Linux)

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

Технологическая платформа 1С:Предприятие – это большой программный продукт (только на С++ - более 10 миллионов строк кода, а есть ещё Java и JavaScript). Подробнее про устройство платформы можно прочитать тут.

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

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

Читать далее
Всего голосов 25: ↑25 и ↓0+25
Комментарии10

Compile Time Dependency Injection в С++: как обуздать зависимости не прибегая к позднему связыванию

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

Начав свою карьеру в качестве C# разработчика, я постоянно сталкивался с использованием техники внедрения зависимостей (Dependency Injection). За то время, что я работаю с C++, я не заметил здесь такого же широкого распространения этой идеи.

В то же время мне показалась весьма интересной такая возможность C++, как написание кода, который частично либо полностью может быть выполнен на этапе компиляции.

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

Читать далее
Всего голосов 14: ↑14 и ↓0+14
Комментарии19

Основы проектирования архитектуры простой социальной сети

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

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

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

Читать далее
Всего голосов 20: ↑16 и ↓4+12
Комментарии5

В борьбе со сложностью, или Как обуздать лог-линейный алгоритм (со ссылкой на код)

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

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

Алгоритм решает простую задачу. Он объединяет персональные данные из разных систем и получает на выходе «золотую запись». Делает он это в батчёвом и транзакционом режимах с приемлемой вычислительной сложностью, несмотря на принадлежность к формальному классу комбинаторных алгоритмов.

«Золотая запись» выступает в дальнейшей цепочке обработки данных в качестве уникального ключа. Это позволяет решить на масштабах компании задачу сопоставления ранее несвязанных событий, что даёт профит бизнесу как напрямую (через лучшее понимание клиентского пути), так и опосредованно через лучшую организацию аналитики и выстраивание предиктивных моделей.

Читать далее
Всего голосов 12: ↑12 и ↓0+12
Комментарии9

Информация

В рейтинге
3 874-й
Зарегистрирован
Активность

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

C++ Разработчик
Middle