Pull to refresh
75
0.3
Сергей @lamerok

Хоккеист — на микроконтроллерах программист

Send message

Домашний сервер на базе Proxmox

Level of difficultyEasy
Reading time9 min
Views25K

Привет! Меня зовут Александр Щербаков. Я DevOps команд страхования в Банки.ру. На своём карьерном пути я успел поработать эникейщиком, системным администратором и, наконец, DevOps‑инженером с несколькими командами разработки. Как и любой инженер, я стремлюсь постоянно совершенствоваться: получать новые знания, изучать как устоявшиеся, так и только появившиеся технологии.

И здесь сразу появляется главная проблема — для развития DevOps нужна среда, где можно запускать ПО для исследования. Разработчикам проще: открыл документацию, скачал IDE, начал пробовать и изучать новую технологию. А вот DevOps‑инженеру одной только IDE будет мало, так как часть его работы как минимум завязана на Linux серверах. Поэтому важно не просто знать, как использовать готовые решения, но и понимать, как они функционируют на уровне инфраструктуры.

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

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

Читать далее
Total votes 50: ↑48 and ↓2+54
Comments129

Создание собственного API на Python (FastAPI): Гайд по POST, PUT, DELETE запросам и моделям Pydantic

Level of difficultyEasy
Reading time29 min
Views4.5K

Друзья, приветствую вас в очередной статье, посвященной разработке API с использованием фреймворка FastAPI. В прошлой публикации мы познакомились с основами FastAPI и написали первые функции, освоив GET-запросы. Однако возможности HTTP общения клиента и сервера этим не ограничиваются. Сегодня мы изучим POST, PUT и DELETE запросы.

В прошлой статье мы рассмотрели GET запросы и научились писать свои первые функции. Сегодня же мы рассмотрим методы, позволяющие отправлять данные (POST), обновлять (PUT) и удалять данные (DELETE).

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

Как в Яндекс Еде помогли курьерам, или Рассказ о маленьком стартапе в большой компании. Доклад Яндекса

Reading time6 min
Views3K

Денис Терехов, тимлид в Яндекс Еде, рассказал на митапе для разработчиков в Новосибирске о том, как его команда помогла курьерам быстрее доставлять заказы.

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

Читать далее
Total votes 8: ↑5 and ↓3+5
Comments8

Как я стал не пойми кем

Level of difficultyEasy
Reading time3 min
Views64K

Когда счастливый и довольный достиг того, чего хотел — вкатился в Linux‑разработку. Но получил не совсем то, чего хотел. Или хотел, но еще не понял, что хотел.

Ну так и чего хотел-то?
Total votes 58: ↑47 and ↓11+41
Comments41

Опасность устарела: несколько важных нюансов в новых стандартах C++

Reading time16 min
Views14K
Undefined behavior (UB) — боль, знакомая каждому разработчику со стажем; эдакий «код Шредингера», когда не знаешь, правильно тот работает или нет. К счастью, стандарты языка С++20/23/26 привнесли относительно неопределенного поведения кое-что новое. И довольно важное, если вы — архитектор ПО, а «плюсы» — ключевой стек вашей компании (подробнее о том, как и почему мы в «Лаборатории Касперского» много используем С++, читайте здесь).

В этой статье я со своих позиций Senior Software Architect и Security Champion в микроядерной операционной системе KasperskyOS рассмотрю кейсы-ловушки, в которые можно попасть практически в любом из стандартов, и покажу, что меняется в С++20/23/26, — уменьшается ли количество кейсов с неопределенным поведением, и становится ли С++ безопаснее.


Читать дальше →
Total votes 58: ↑56 and ↓2+60
Comments48

Лицензия ФСТЭК: трудно получить, легко потерять, невозможно забыть

Level of difficultyEasy
Reading time5 min
Views5.7K

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

А что наяву? Лицензия получена, а значит ее требованиям придется соответствовать. Что именно делать потом и чем опасно бездействие, пишут редко. Что ж, давайте это исправим.

Читать далее
Total votes 5: ↑4 and ↓1+4
Comments3

Шпаргалка с командами для Windows, Linux и macOS (Терминал, VirtualEnv и Git)

Reading time3 min
Views20K

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

В ней вы найдете основные команды для работы в терминале Windows, Linux и macOS. Также описаны базовые команды по работе с VirtualEnv и Git.

Смотреть команды
Total votes 19: ↑6 and ↓13-7
Comments13

Как я нашёл 55-летний баг в первой игре о приземлении на Луну

Level of difficultyMedium
Reading time7 min
Views18K

Спустя всего несколько месяцев после исторической прогулки по Луне Нила Армстронга, ученик массачусетской школы Lexington High School Джим Сторер написал первую версию игры Lunar Landing. К 1973 году она стала самой популярной компьютерной игрой с большим отрывом от остальных. В этой простой текстовой игре вы управляете аппаратом для посадки на Луну, стремясь максимально плавно приземлиться. Всё движение происходит вертикально, каждые десять симулируемых секунд игрок решает, сколько топлива нужно сжечь.

Недавно я исследовал график оптимального сжигания топлива для наиболее мягкого приземления с максимумом оставшегося топлива. К моему удивлению, теоретически наилучшая стратегия не сработала. Игра ошибочно думает, что аппарат не коснулся поверхности, хотя на самом деле это так. Углубившись в анализ, я был потрясён сложной физикой и вычислениями в игре. В конечном итоге я обнаружил баг: отсутствующее деление пополам; похоже, почти за 55 лет никто не заметил этого.
Читать дальше →
Total votes 79: ↑79 and ↓0+106
Comments27

C++20 в bare-metal программировании, работа с регистрами микроконтроллеров Cortex-M

Level of difficultyMedium
Reading time43 min
Views11K

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

Статья предполагает, что читатель имеет базовые знания программирования bare-metal систем и языка С++, в том числе и современных стандартов. Это означает, что совсем базовые пояснения выходят за рамки этой статьи.

Читать далее
Total votes 64: ↑63 and ↓1+74
Comments29

Статический и динамический полиморфизм в C++

Level of difficultyEasy
Reading time6 min
Views5.8K

Привет, Хабр! К сегодняшнему дню написано уже немало учебников и статей по полиморфизму в целом и его воплощения в C++ в частности. Однако, к моему удивлению, при описании полиморфизма никто (или почти никто) не затрагивает тот факт, что помимо динамического полиморфизма в C++ имеется и достаточно мощная возможность использования его младшего брата – полиморфизма статического. Более того, он является одной из основных концепций STL – неотъемлемой части его стандартной библиотеке.

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

Читать далее
Total votes 11: ↑8 and ↓3+6
Comments28

Инкрементальный алгоритм привязки GPS-трека к дорожному графу

Reading time5 min
Views19K
The Puxi Viaduct by wikimedia

Геоинформационные системы постепенно входят в повседневный быт.

Большинство мобильных устройств снабжены GPS/ГЛОНАСС-приёмниками. Это позволяет разработчикам получать записи пути своих пользователей (треки). Треки можно использовать для решения целого ряда задач — от навигации по карте и информирования о местоположении друзей до построения пробок и предсказания дорожной ситуации.

К сожалению, без дополнительной обработки трек пользователя малоинформативен, поэтому требуется этап связи внешних данных и внутренней карты приложения. Для этого существуют специальные алгоритмы привязки данных (map matching algorithms).

Эта статья посвящена алгоритму привязки трека к дорожному графу и результатам его применения в проекте Карты@­Mail.ru.
Читать дальше →
Total votes 21: ↑21 and ↓0+21
Comments16

Как пройти собеседование в FAANG. Мой опыт и рекомендации в 2024 году

Level of difficultyEasy
Reading time18 min
Views17K

Всем привет, меня зовут Максим Иванов, я frontend-разработчик в компании Т-Банк (Тинькофф). Сегодня мы поговорим с вами о лайфхаках, которые могут вам пригодиться, если вы хотите устроиться в Google. С автором данной статьи я был лично знаком, когда он еще работал в Тинькофф. Смею заметить, что этот человек не был рядовым разработчиком. Он был очень талантливым как инженер, так и руководитель. Значительная часть его опыта была связана с курированием отдела Frontend Core Tech в Тинькофф, а это 200 инженеров в подчинении. Он постоянно проводил встречи для разработчиков и распространял самые передовые знания на всю компанию. Обучал, помогал, решал самые сложные задачи, которые стояли перед отделом. Когда я наткнулся на его статью, то решил отдать дань уважения и сделать перевод. Спасибо, если дочитаете до конца и давайте начнем!

Читать далее
Total votes 14: ↑10 and ↓4+8
Comments17

Быстрое вычисление степени

Level of difficultyMedium
Reading time15 min
Views11K

В статье описан процесс разработки алгоритма функции вычисления любой степени положительного числа, использующего «магическую константу». Приведены результаты её сравнения с исходной функцией вычисления обратного квадратного корня, а также со стандартной функцией вычисления степени Math.Pow.

Читать далее
Total votes 17: ↑16 and ↓1+19
Comments8

Матричный шрифт с анимацией на микроконтроллере

Level of difficultyMedium
Reading time5 min
Views8K

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

Читать далее
Total votes 84: ↑84 and ↓0+104
Comments41

Реализация глобальных индексов в распределённой системе

Level of difficultyMedium
Reading time17 min
Views4.5K

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

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

Матрица компетенция/карьерного роста программистов

Level of difficultyEasy
Reading time8 min
Views2.5K

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

Я не претендую на истину в последней инстанции, это всего лишь мое видение, любые корректировки/добавки/комментарии - приветствуются

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

«А поменяйте мне фсе зубы» — история пациента с Хабра

Reading time17 min
Views38K
Тут мы продолжаем рассказывать про то, как вы взаимодействуете с нашими уютными клиниками. Иван (имя пациента изменено) пришёл к нам после долгого и вдумчивого чтения блога на Хабре, а до этого лет десять, наверное, не был вообще ни у каких стоматологов.

Когда он впервые сел ко мне в кресло, у него не было вообще ни одного целого зуба. Это не преувеличение ради красного словца — реально ни одного! Спустя год и примерно пятьдесят визитов в клинику у Вани улыбка, как говорится, — на миллион! Точнее, на три.

Он сам захотел рассказать здесь свою историю. Поэтому вот.

image
Это Иван, он прошёл зубной квест на хард-левеле и радуется

Сначала будут Ванины впечатления, а потом я, Леван, его ортопед, расскажу, как мы реставрировали его зубы. И заодно про то, как мы работали со сложным пациентом, который мог сорваться и уйти в закат с любого приёма, плюс дополнительно у нас не возникла симпатия с первого раза, что неудивительно, если знать его анамнез.
Читать дальше →
Total votes 118: ↑106 and ↓12+120
Comments230

REST API на котиках

Level of difficultyEasy
Reading time7 min
Views24K

Привет любителям котиков! Меня зовут Юля, я backend‑разработчик компании CDEK. Я сама не так давно изучала все эти сложные понятия в программировании, поэтому решила помочь и вам разобраться с одним из них.

С какой стороны IT вы бы не пытались войти — в какой‑то момент столкнётесь с понятием REST API. Эта статья создана, чтобы смягчить данное столкновение. Новые темы всегда легче воспринимаются на простых примерах, ну а если это примеры с котиками, то варианта не разобраться просто нет. Хочется обойтись без сложных научных определений, а рассказать самым простым языком. Поэтому, если вы любите сухие и точные формулировки, то вам нужна другая статья :)

Читать далее
Total votes 63: ↑60 and ↓3+61
Comments26

Привычка быть SOLIDным разработчиком

Level of difficultyMedium
Reading time20 min
Views15K

Привет, Хабр! Меня зовут Грант, я уже 5 лет занимаюсь backend-разработкой в SimbirSoft, а с 2021 года возглавляю Backend-отдел компании в Краснодаре. В последние несколько лет неоднократно замечаю, что на входном интервью соискатели часто путают принципы разработки. Поэтому в этой статье решил разобрать, как проще их понимать, какие связи между ними прослеживаются, стоит ли учить все или что-то можно пропустить. А еще попробую раскрыть некоторые особенности, какие секреты скрывают популярные принципы разработки.

Погрузиться 👀
Total votes 15: ↑12 and ↓3+11
Comments5
1
23 ...

Information

Rating
1,993-rd
Location
Челябинск, Челябинская обл., Россия
Date of birth
Registered
Activity