Pull to refresh
0
0
Glum Psyche @GlumPsyche

Software Developer

Send message

Создаем свою простую (C++) библиотеку с документацией, CMake и блекджеком

Level of difficultyMedium
Reading time33 min
Views16K

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

Если вы ловили себя на мысли: ‭«А почему мне бы не создать свою полноценную библиотеку?‭», то я рекомендую прочитать вам мою статью.

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

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

Читать далее
Total votes 49: ↑48 and ↓1+59
Comments68

Создаем свою библиотеку на C++ с тестированием, CMake и блекджеком: часть 2

Level of difficultyMedium
Reading time30 min
Views5.7K

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

Если вы ловили себя на мысли: «А почему мне бы не создать свою полноценную библиотеку?», то я рекомендую прочитать вам мою статью.

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

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

Добро пожаловать во вторую, скорее всего финальную часть статьи! Здесь мы окончательно допишем код, исправим некоторые ошибки.

Читать далее
Total votes 23: ↑23 and ↓0+31
Comments19

Укрощаем одноглазого змея. Разбираемся с WireGuard и делаем свой умный VPN

Reading time29 min
Views294K

Забавная ситуация: сайтов и сервисов, доступных только через VPN, все больше, но при этом многие российские компании закрывают доступ из-за границы. В результате приходится целыми днями теребить ползунки «вкл-выкл», что утомительно. Я расскажу, как с помощью магии маршрутов и WireGuard, решить эту проблему и сделать «умный» VPN, который не надо отключать.


Если ты пользуешься VPN, то и сам наверняка сталкиваешься с блокировками зарубежного трафика. К примеру, могут не открываться pochta.ru, leroymerlin.ru, rt.ru, avito.ru.


Получается мем.



Каждый с этим борется как может. Например, на устройствах Apple родными средствами можно настроить автоматизацию, которая будет запускать VPN, когда открываешь определенные приложения (например, Twitter), а когда выходишь из них — выключать обратно. Но это костыль, а хочется все сделать красиво, да еще и прокачать навык работы с сетью.


Поэтому мы сейчас попробуем «включать VPN чуть-чуть».

Читать дальше →
Total votes 43: ↑42 and ↓1+51
Comments73

Проектная, конструкторская или технологическая документация. Основные системы стандартов

Level of difficultyMedium
Reading time8 min
Views6.8K

Правовая основа стандартизации в России заложена в ст. 71 Конституции Российской Федерации — «В ведении Российской Федерации находятся: … р) метрологическая служба, стандарты, эталоны, метрическая система и исчисление времени; геодезия и картография; наименования географических объектов; метеорологическая служба; официальный статистический и бухгалтерский учет; …»

Дальнейшее развитие законодательства представлено двумя основными федеральными законами, прямо или косвенно лежащими в основе любого стандарта:

— Федеральный закон «О стандартизации в Российской Федерации» от 29.06.2015 N 162-ФЗ;
— Федеральный закон «О техническом регулировании» от 27.12.2002 N 184-ФЗ.

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

Сувенирно-индикаторная лампа упрощённого типа своими руками

Level of difficultyMedium
Reading time6 min
Views8.9K

Лабораторно-практическая электровакуумная работа в домашней мастерской для наработки и совершенствования навыков. Выполнена на несложном, по большей части самодельном оборудовании и из подножных материалов, но повозиться пришлось. Лампа сделана по упрощённой технологии без наполнения её инертным газом. Тлеющий разряд светится в разреженных остатках атмосферного воздуха, львиная доля которого — азот.
Читать дальше →
Total votes 91: ↑91 and ↓0+116
Comments26

Как мы в RuStore на docs as code переходили

Level of difficultyEasy
Reading time7 min
Views6.5K

Приветствую всех! Меня зовут Катя Фролова, я работаю техническим писателем в RuStore.

В прошлом году документация RuStore переехала на новый движок.

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

Читать далее
Total votes 30: ↑28 and ↓2+28
Comments7

Переезд на Spring Boot 3.0 c версии 2.0: какие сложности могут возникнуть

Level of difficultyMedium
Reading time6 min
Views6.6K

Привет, Хабр! Я Артем Киреев, ИТ‑инженер в СберТехе. Мы с командой занимаемся развитием продукта из состава Platform V Synapse — децентрализованной платформы для задач интеграции. Мы стремимся поддерживать актуальность стека, на котором разрабатываем наши продукты, и регулярно отслеживаем все изменения. Обратившись к таблице поддерживаемых версий на официальном сайте Spring, мы обнаружили, что версии Spring Boot ниже 3.0 больше не поддерживаются. Поэтому мы решили, что нужно перевести проект на последнюю из существующих версий. На момент написания статьи это Spring Boot 3.2.

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

Читать далее
Total votes 24: ↑20 and ↓4+22
Comments1

Регистрация и авторизация с помощью Spring Security на примере простого приложения

Reading time21 min
Views315K
Добрый день!

В этой статье будет рассмотрено создание простого веб приложения с использованием Spring Boot и Spring Security. В приложении будет реализована регистрация новых пользователей и авторизация, ограничение доступа к страницам сайта в зависимости от роли пользователя.
Главная цель статьи показать как можно ограничить доступ к различным страницам сайта для пользователей с разными ролями.

Что будет представлять из себя приложение


Сайт со следующими страницам:

  • страницы доступные всем пользователям: главная, регистрации и логина;
  • страница доступная для зарегистрированных пользователей: новости;
  • страница доступная для администратора.

Что будем использовать


  • JDK 8+;
  • Intellij Idea;
  • Spring (Spring Boot, Spring MVC, Spring Security);
  • Hibernate;
  • JSP;
  • PostgreSQL.
Читать дальше →
Total votes 13: ↑8 and ↓5+8
Comments10

Прокачка @PreAuthorize в Spring Security произвольными типами и простым инспектируемым DSL

Reading time18 min
Views41K

Spring Security — must-have компонент в Spring-приложениях, так как он отвечает за аутентификацию пользователя, а также за авторизацию тех или иных его действий в системе. Одним из методов авторизации в Spring Security является использование аннотации @PreAuthorize, в которой с помощью выражений можно наглядно описать правила, следуя которым модуль авторизации решает, разрешить ли проведение операции или запретить.


В моём REST-сервисе возникла необходимость предоставить точку доступа к описанию правил авторизации для всех методов контроллеров сервиса. Причём, по возможности, избежать раскрытия специфики именно SpEL-выражений (т.е., вместо permitAll нужно что-то вроде anybody, а principal избегать вовсе как избыточное выражение), но возвращать свои выражения, с которыми уже можно делать что угодно.


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

Spring MVC: создание веб-сайтов и RESTful сервисов

Reading time34 min
Views145K

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


Примечание: Статья ~ 7500 слов, вероятно, не стоит читать ее на мобильном устройстве. Добавьте ее в закладки и вернитесь позже.


Содержание


Читать дальше →
Total votes 9: ↑7 and ↓2+9
Comments4

Замки, драконы и сундуки: как возник классический сеттинг игрового фэнтези? Часть 2: как трое великих переделали фэнтези

Level of difficultyEasy
Reading time6 min
Views10K

В прошлой статье мы вспомнили, как и почему в США середины 60-х годов оформился жанр фэнтези — и почему цикл о Конане Роберта Говарда оказал на него как минимум не меньшее влияние, чем «Властелин колец» Толкиена. Именно на почве увлечения «Конанинаной» в 1965 году оформился неформальный клуб писателей с говорящим названием «Гильдия мечников и чародеев Америки» (SAGA). Его ядром стали фанаты и продолжатели Говарда Лайон Спрэг де Камп, Лин Картер и Джон Джейкс. В 1966-1967-х годах публикация «продолжений» похождений Конана от де Кампа и Картера совпала с ростом популярности трилогии Толкиена и пиком контркультурных настроений среди американской молодёжи. Именно во второй половине 60-х фэнтези из увлечения немногих гиков превратилось в массово популярный у читателей жанр, но это происходило не только стараниями издателей Толкина и продолжателей Говарда.
Читать дальше →
Total votes 61: ↑59 and ↓2+73
Comments19

Локальный HTTPS в dev-окружении — простая настройка

Reading time6 min
Views11K


Иногда в процессе веб-разработки требуется безопасное окружение в браузере, то есть HTTPS. Удобный способ сделать это — установить локальный УЦ и автоматизировать выдачу сертификатов на любые поддомены lcl.host и localhost. Это более функциональная и удобная альтернатива самоподписанным сертификатам.

Для установки локального УЦ есть инструменты lcl.host и mkcert, которые помогают быстро настроить и использовать HTTPS в dev-окружении.
Читать дальше →
Total votes 24: ↑18 and ↓6+17
Comments5

Вы все еще пишете многопоточку на C++ с ошибками синхронизации?

Level of difficultyMedium
Reading time11 min
Views26K
Привет, коллеги! В этой статье я покажу свой подход к написанию многопоточного кода, который помогает избежать типовых ошибок, связанных с использованием базовых примитивов синхронизации.

Демонстрация идеи будет проходить на живых примерах кода на современном C++. Большинство описанных решений я применял сначала на собственных проектах, а теперь часть этих подходов уже используется в нашей собственной микроядерной операционной системе «Лаборатории Касперского» (KasperskyOS).

Сразу хочу оговориться, что тема многопоточности — очень большая и серьезная. И эта статья — не полноценный анализ проблем многопоточки, а только частНЫе (но довольно частЫе) кейсы, когда мы вынуждены использовать мьютексы.
Читать дальше →
Total votes 53: ↑47 and ↓6+57
Comments148

Qt: Вывод отчета стандартными средствами (или живем без генераторов отчета)

Reading time4 min
Views16K

Нудное вступление с Qt 4.8


Недавно коллега по работе спросил об опыте использования построения отчетов под Qt (начинаем потихоньку внедрять SCADA, написанную на Qt) — в силу поставленной задачи очень нужная вещь. Генераторами никто не пользовался (на данной платформе), но отчеты мы я каким-то образом делали без использования FastReport и таскания лишних приложений.

Покопавшись в проектах, нашел приложение с отчетами, виджетами для предпросмотра (QLabel, QTableView....). Вид отчета «preview»:

image
Читать дальше →
Total votes 15: ↑12 and ↓3+9
Comments13

PyQt6 — полное руководство для новичков

Reading time30 min
Views364K

К старту курса по разработке на Python делимся детальным руководством по работе с современным PyQt для новичков. Чтобы читать было удобнее, мы объединили несколько статей в одну:

1. Первое приложение

2. Слоты и сигналы

3. Виджеты

За подробностями приглашаем под кат.

Читать далее
Total votes 23: ↑22 and ↓1+26
Comments14

Первая программист Августа Ада Лавлейс

Reading time6 min
Views95K
10 декабря названо Днем программиста в честь родившейся также в этот день первой представительницы этой не слишком древней профессии.

Августа Ада Лавлейс родилась 10 декабря 1815 года. Она была единственной дочерью великого английского поэта Джорджа Гордона Байрона (1788 — 1824) и Аннабеллы Байрон, урождённой Милбэнк (1792 — 1860). «Она незаурядная женщина, поэтесса, математик, философ», — писал Байрон о своей будущей жене в 1813 году. Родители ее расстались, когда девочке было два месяца, и больше своего отца она не видела.

Ада унаследовала у матери любовь к математике и многие черты отца, в том числе, близкий по эмоциональному складу характер.
Байрон посвятил дочери несколько трогательных строк в «Паломничестве Чайльд Гарольда», но при этом в письме к своей кузине заранее беспокоился: «Надеюсь, что Бог наградит ее чем угодно, но только не поэтическим даром…
Ада получила прекрасное воспитание. Важное место в нём занимало изучение математики – в немалой степени под влиянием матери. Её учителем был известный английский математик и логик Август де Морган. К 1834 году относится ее первое знакомство с выдающимся математиком и изобретателем Чарльзом Бэбиджем, создателем первой цифровой вычислительной машины с программным управлением, названной им „аналитической“. Бэббидж, который был знаком с леди Байрон, поддерживал увлечение юной Ады математикой. Бэббидж постоянно следил за научными занятиями Ады, он подбирал и посылал ей статьи и книги, в первую очередь по математическим вопросам. Занятия Ады поощряли друзья её семьи – Август де Морган и его жена, супруги Соммервил и другие. Ада посещает публичные лекции Д.Ларднера о машине. Совместно с Соммервилем и другими она впервые посещает Бэббиджа и осматривает его мастерскую. После первого посещения Ада стала часто бывать у Бэббиджа, иногда в сопровождении миссис де Морган. В своих воспоминаниях де Морган так описала один из первых визитов: „Пока часть гостей в изумлении глядела на это удивительное устройство с таким чувством, как говорят, дикари первый раз видят зеркальце или слышат выстрел из ружья, мисс Байрон, совсем ещё юная, смогла понять работу машины и оценила большое достоинство изобретения“
image
Семейная жизнь Августы Ады сложилась счастливо. В 1835 году Ада Байрон в возрасте девятнадцати лет вышла замуж за 29-летнего лорда Кинга, который впоследствии стал графом Лавлейс. Муж не имел ничего против научных занятий супруги и даже поощрял ее в них. Правда, высоко ценя ее умственные способности, он сокрушался: „Каким отличным генералом ты могла бы стать!“ Супруги Лавлейс вели светский образ жизни, регулярно устраивая приёмы и вечера в своём лондонском доме и загородном имении Окхат-Парк. Замужество Ады не отдалило её от Бэббиджа; их отношения стали ещё более сердечными. В начале знакомства Бэббиджа привлекли математические способности девушки. В дальнейшем Бэббидж нашёл в ней человека, который поддерживал все его смелые начинания. Ада была почти ровесницей его рано умершей дочери. Всё это привело к тёплому и искреннему отношению к Аде на долгие годы.

Читать дальше →
Total votes 86: ↑69 and ↓17+52
Comments44

Аналитическая машина Бэббиджа. Часть вторая — трагическая судьба вычислительной техники XIX века

Reading time5 min
Views18K

Первую часть статьи вы можете найти по этой ссылке.

Идея разностной машины посетила Чарльза Бэббиджа то ли 1812, то ли 1813 году. Более точную дату история от нас скрывает. Что же должна была делать задуманная машина?

Для того что бы понять это — придётся вспомнить немного математики.

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

Читать дальше →
Total votes 64: ↑57 and ↓7+50
Comments18

MacOS Monterey на Linux — быстро и просто?

Level of difficultyEasy
Reading time3 min
Views49K
Что делать, если у вас возникло желание или необходимость заняться разработкой под MacOS или iOS, но под рукой нет макбука, а покупать его только чтобы открыть Xcode кажется делом сомнительным? Недавно я столкнулся с такой проблемой в одном из своих пет-проектов и решил ее достаточно просто и быстро. После выполнения нескольких достаточно примитивных шагов, мне удалось запустить MacOS Monterey как на скриншоте ниже.

image

Никакого Virtualbox, никакого Virtual Machine Manager. Из требований — только 100 Гб свободного места на диске и хотя бы 16 Гб оперативной памяти. В рунете я встречал описание похожих путей установки, вроде Docker-OSX или Sosumi. Но я бы хотел поделиться способом, который позволяет использовать актуальную версию MacOS (Sosumi — сразу минус) и не потратить уйму свободного времени на возню с конфигами и терминалом. Поехали.
Читать дальше →
Total votes 68: ↑64 and ↓4+75
Comments67

GitFlic: нас обвинили в «распиле» — мы не поняли почему, но посмеялись

Reading time8 min
Views17K

Здравствуй, читатель!

"...Российский GitHub..." - за такую фразу в заголовке на Habr'e однажды зацепился мой взгляд. С предвкушением я нырнул под кат и... Увы, обнаружил лишь поверхностный обзор, щедро сдобренный издёвкой и скриншотами. Но, согласитесь, ведь не каждый день на горизонте событий возникает что-то IT-шное с припиской "российский", посему любопытство грубо вытолкало меня из раковины интроверта и заставило обратиться напрямую к наиболее надежному источнику - команде сервиса GitFlic.

Читать далее
Total votes 66: ↑20 and ↓46-20
Comments117

Настраиваем окружение Qt6+QtC без VPN

Reading time3 min
Views51K

Как известно, с недавних пор сервера qt.io запрещают загрузку любых архивов с российских IP. Если первое время проверка шла только на получение метаинформации, теперь любая загрузка файла обрывается сервером.

Обычные советы, как это обойти, включают:

Используй платный безлимитный VPN;
Используй дистрибутив Linux и его бинарные сборки;
Собирай сам из исходинков.

Все это рабочие советы, но не очень дружелюбны к начинающим разработчикам, которые только hello world начинают собирать. Я расскажу, как можно быстро настроить окружение используя зеркала Yandex и github.

Читать далее
Total votes 12: ↑12 and ↓0+12
Comments37
1
23 ...

Information

Rating
Does not participate
Location
Таганрог, Ростовская обл., Россия
Date of birth
Registered
Activity

Specialization

Software Developer, Mobile Application Developer
Git
C++
Qt
Cmake
Linux
PostgreSQL
SQLite