Обновить
4
0
Сергей@Chelyuk

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

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

Ansible, bash и я: три мушкетёра в мире автоматизации управления компьютерами на Linux

Уровень сложностиПростой
Время на прочтение10 мин
Охват и читатели5.9K

В мире, где биты и байты движутся в такт машинного кода, где каждый файл — как драгоценный камень, а каждая команда — словно заклинание, живут три героя: Ansible, Bash и их друг-администратор. Здесь каждый день приносит новые задачи, а каждая задача — захватывающее приключение.

Не стойте на пороге - читайте дальше!

Как кофе с собой делает нас нищими?

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

Дисклеймер: речь пойдёт не только о кофе — да и вовсе не о кофе. Суть статьи — попытаться ответить на вопрос: почему при нормальном доходе мы ничего не откладываем, не покупаем квартиры и прочие дорогостоящие вещи?

В любой истории нужен герой. Нашим героем будет Петя. Ему 27 лет, он живёт в Екатеринбурге, работает программистом на позиции Senior Backend Developer в крупной московской компании и получает пресловутые 300к/наносек — 300 000 рублей в месяц.

Как проходит обычный рабочий день Пети? Он едет на работу на такси (сегодня по акции — всего 500 рублей), по пути заходит в свою любимую кофейню, берёт раф без кофеина на безлактозном молоке. 400 рублей — копейки, он за 15 минут работы столько зарабатывает.

Доходит до своего рабочего места и начинает работать. Время обеда подходит — он открывает приложение доставки, заказывает себе еду из сервиса с обещанной доставкой от 15 минут. Тратит, ну, максимум 1000. Он же заслужил — ничего такого здесь нет. Попутно смотрит, куда бы сходить на выходных или вечером.

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

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

Читать далее

Сложно о простом. Как работает интернет. Часть 5. Будущее (ли?) сетей: IPv6, SDN и Overlay сети

Уровень сложностиПростой
Время на прочтение18 мин
Охват и читатели6.5K

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

В предыдущей статье я рассказывал о различиях LAN, MAN, WAN, что такое сети Clos и иерархию операторов.

В этом цикле я не стану учить вас настраивать оборудование и проектировать сети. Я расскажу об основных (и не только) принципах построения сети, а также о функционировании сети и сетевых протоколов в стеке TCP/IP.

Я буду часто ссылаться к предыдущим статьям, где уже описывал сетевые протоколы. Это позволит мне сократить объемный текст. 

Читать далее

Неработающие принципы Agile. Когда Agile не принесет ожидаемого эффекта

Время на прочтение6 мин
Охват и читатели4.3K

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

Читать далее

Круговой импорт в Python: как он ломает проекты и как его победить

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

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

Сегодня говорим о том, что в какой‑то момент словит почти каждый разработчик, особенно если вы не просто пишете скрипты, а строите проекты — будь то Django, Flask или кастомная архитектура с бизнес‑логикой в отдельных слоях. Речь про круговые импорты: они не объявляют о себе заранее, не фейлят весь проект громко и сразу, но подкрадываются исподтишка. И вот вы уже сидите с ошибкой ImportError: cannot import name ... или AttributeError, гуглите часами, тасуете импорты туда‑сюда и ловите дежавю — кажется, это уже было, но где?

Читать далее

Обработка ошибок в Go

Время на прочтение14 мин
Охват и читатели3.1K

Обработка ошибок — это один из самых важных аспектов написания надёжного кода. В Go к этому вопросу подошли нестандартно: вместо традиционного механизма try/catch, как в Java или Python, ошибки просто возвращаются как значения. Изначально это может показаться странным, но на практике этот подход делает обработку ошибок более явной и честной.

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

Читать далее

Нашел, проверил, убедил: как мы организовали генерацию SQL-запросов, проверку сложных данных и при чем здесь Allure

Время на прочтение22 мин
Охват и читатели2.5K

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

Я, Михаил Герасимов, инженер РСХБ-Интех. Уже два года занимаюсь автоматизацией тестирования, и за это время успел написать (и переписать) немало SQL-запросов. Вместе с моим коллегой Михаилом Палыгой мы развиваем инструменты для автоматизированного тестирования, и сегодня расскажем вам о том как мы справляемся с построением сложных SQL-запросов и проверкой объектов в базе данных, на примере нашей библиотеки CheckMateDB для автоматизации тестирования банковской системы ЦФТ-Банк.

В статье опишем проблемы, с которыми сталкивались при ручном написании SQL-запросов и проверке данных: дублирование кода, сложность поддержки, отсутствие единого стиля и низкая информативность тестов. Для решения этих проблем мы разработали инструмент QueryBuilder, который позволяет динамически генерировать SQL-запросы с помощью Java-кода.

Мы создали иерархию классов CriteriaBasic и Table для удобного описания критериев поиска данных в базе, используя паттерн fluent interface. Также мы разработали кастомные классы проверок на базе AssertJ с поддержкой Allure-шагов, которые позволяют проверять сложные многоуровневые объекты с возможностью погружения во вложенные структуры. Для облегчения рутинной работы создали плагин, автоматически генерирующий классы DTO и Table на основе структуры базы данных. Библиотека интегрирована с Hibernate через DaoCommon, что обеспечивает удобное выполнение SQL-запросов и управление сессиями. Результатом стало существенное улучшение читаемости тестов, повышение переиспользуемости кода, стандартизация подхода к тестированию и создание информативных Allure-отчетов.

Читать далее

Go-тесты: путь к надежному коду

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

Очень часто автотесты воспринимаются как обременение: что-то скучное, унылое и совершенно не нужное. С уверенностью,  что вместо тестов лучше заняться «настоящим»  кодом, некоторые разработчики решают не тратить на них время… и тратят его в два раза больше, когда впоследствии приходится ковырять неожиданно возникшие ошибки. Факт: в долгосрочной перспективе именно тесты становятся фундаментом стабильности, а любое изменение без них превращается в настоящую игру с огнём — особенно в активно развивающемся проекте, когда каждый новый релиз может полностью сломать старую логику.

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

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

Читать далее

Как устроены новые мапы в Go 1.24

Время на прочтение9 мин
Охват и читатели7.5K

Привет, Хабр! Меня зовут Владимир Марунин, я ведущий разработчик в команде Clatch. Сегодня расскажу о новых мапах в Go 1.24: разберем изменения, посмотрим, что было и что стало. О мапах часто спрашивают на собеседованиях, а еще без них нельзя просто так взять и написать программу на Go — так что, надеюсь, тема будет полезной и интересной.

Этот текст — расширенная версия моего доклада с митапа МТС True Tech Go. Если больше нравится слушать, а не читать, можно сразу переходить по ссылке. Поехали!

Читать далее

Десктопное кросс-платформенное приложение на Wails (Golang + Vue.js). Как мы делали Tuna Desktop

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

Wails - это легковесный фреймворк, предназначенный для создания кросс-платформенных GUI приложений рабочего стола на golang и стандартных веб технологиях (Svelte, React, Preact, Vue, Lit, Vanilla JS). Ближайшие аналоги это естественно Electron (JS), Tauri (Rust), хочется добавить Qt (С++), но это уже другой уровень. Сразу скажу, что Wails не идеален, имеет множество ограничений и в целом не подойдёт для чего-то крупного, Tauri к примеру более зрелый проект, больше функций, быстрее развивается, больше и живее сообщество, но это уже на rust, а это не наш стэк.

Читать далее

Безопасная сборка Docker-образов в CI: пошаговая инструкция

Время на прочтение7 мин
Охват и читатели4.4K

Привет, Хабр! Я Саша Лысенко, ведущий эксперт по безопасной разработке в К2 Кибербезопасность. Сейчас появилась куча инструментов для автоматизации рутинных задачи и все активно идут в эту сторону для оптимизации ресурсов и быстрых результатов. Так в DevOps внедрение CI/CD пайплайнов ускоряет разработку, деплой приложений, сокращает time to market. Автоматизация — незаменимый сегодня процесс, который при этом открывает отличные лазейки и для киберугроз. Далеко не все задумываются, кому и какие доступы раздают и к каким последствиям это может привести. Поэтому без учета кибербезопасности здесь появляются дополнительные риски инцидентов. В этой статье я поэтапно разобрал пример сборки Docker-образов в GitLab CI пайплайнах с учетом баланса между безопасностью автоматизированной разработки и скоростью процесса.

Читать далее

Функции и методы в Go

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

Go — язык, который ценится за простоту и чёткость. Однако даже при минимальном синтаксисе здесь есть нюансы. Особенно это касается работы с функциями и методами. В этой статье хочу поделиться личными наблюдениями и выводами по нескольким ключевым темам: выбор типа получателя, использование именованных параметров результата, распространённые ошибки при возврате nil, проблемы с файлами в качестве входных данных и поведение defer.
ps. Обложку нейронка сгенерировала. Очень странно, но мне понравилось.

Читать далее

Две недели кодинга без ноутбука: AR очки и Linux-on-Android

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

Всем привет! Представляю вашему вниманию перевод статьи «Coding without a laptop — Two weeks with AR glasses and Linux‑On‑Android». Перевод сделал человек с помощью мозга, а не LLM.

Под катом будет личный опыт программиста, который отправился в поездку но не хотел брать с собой ноутбук, а вместо этого взял Android и AR‑очки. Из него вы узнаете с какими трудностями он столкнулся выбрав такое решение, и какие плюсы он почерпнул. И самое главное, повторит ли он свой опыт, если выпадет случай?

Приятного чтения

Тайна списка шумерских царей. Часть 3. Зодиак

Время на прочтение33 мин
Охват и читатели19K

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

Что вы знаете об астрологии? Название “астрология” происходит от древнегреческого ἀστήρ «звезда» и λόγος «мысль, причина». Сама астрология — это некая древняя практика, которая позволяет гадать по звездам. Дескать, звезды влияют на судьбы людей и по положению звезд можно предсказывать будущее.

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

Что такое знаки зодиака? Есть двенадцать созвездий, лежащих на годичном пути Солнца. То, в каком знаке родился человек, по мнению астрологов определяет его характер и судьбу. Зодиак придумали греки, поместив на небо героев своих мифов.

Читать далее

Как развернуть свой GitLab с CI/CD, используя IaC

Время на прочтение11 мин
Охват и читатели7.5K

Всем привет! Меня зовут Александр, я обучаюсь в магистратуре СПбПУ. А заодно являюсь младшим разработчиком на C++ и стараюсь использовать и внедрять практики DevOps в мою ежедневную разработку. Недавно я получил зачет за то, что развернул собственный GitLab (именно GitLab, а не аналог) на серверах Selectel с CI/CD и Container Registry. Собственно, об этом и расскажу и в статье.
Читать дальше →

SOLID на котиках

Время на прочтение7 мин
Охват и читатели30K


Каждый программист хоть раз слышал о принципах SOLID. На собеседованиях и экзаменах в вузах многие из нас пытались вспомнить, о чем же был тот самый принцип Лисков. Однако вряд ли цель преподавателей и интервьюеров — заставить нас заучивать строчки из учебников. SOLID действительно помогает писать качественный код, когда во всем разберешься! Если вы этого еще не сделали, добро пожаловать под кат. Еще раз взглянем на то, как устроены всем известные принципы. Обещаю — без духоты, все рассмотрим на примерах с котиками.
Читать дальше →

Чем занимается IT-архитектор: фантазии коллег и суровая реальность

Время на прочтение10 мин
Охват и читатели12K

Привет, Хабр! Я — Светлана Уварова, ведущий системный архитектор в МТС.

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

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

Читать далее

.NET Aspire — империя дотнета наносит ответный удар

Уровень сложностиПростой
Время на прочтение7 мин
Охват и читатели34K

Когда я первый раз услышал про .NET Aspire, я подумал что это какая-то очередная лажа от Майкрософта, про которую все забудут через неделю.

Особенно, учитывая какую дичь часто завозят в шарп (например те же ужасно спроектированные Primary Constructor'ы про которые я писал, или вот прикол-пропозал от самого Тоуба). Так что ожидания у меня, честно говоря, были ниже нуля.

Но попробовав его лично, я был, честно говоря, шокирован. Трепещите, жависты!! Трепещите гошники! Трещепищите питонисты - такого вы еще точно не видели.

Я даже представить не мог, что DevEx можно сделать настолько офигительным.

Узнать про Aspire без смс и регистрации

Обмен данными по SPI между Raspberry Pi и Arduino

Время на прочтение4 мин
Охват и читатели15K

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

Читать далее

Обзор шины SPI и разработка драйвера ведомого SPI устройства для embedded Linux (Часть первая, обзорная)

Время на прочтение13 мин
Охват и читатели201K
В этой статье я хочу провести краткий обзор шины SPI (интерфейса, широко распространённого во встраиваемой технике, используемого для подключения различных устройств) и попытаюсь описать процесс создания драйвера протокольного уровня SPI устройства для Linux. Данный документ не претендует на роль полного руководства, а скорее преследует цель указать нужное направление. Так как статья не вошла в размер одного топика, мне пришлось разбить её на две части.

0. Вместо введения


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

Для кого эта статья?
В первую очередь, для новичков, каковым являюсь и я. На форумах по embedded Linux очень часто можно встретить вопрос: «А как на этой плате работать с SPI?». Именно на него я и попытаюсь дать ответ. В качестве примера, я приведу код написанный для работы с моим тестовым SPI устройством.
Читать дальше →

Информация

В рейтинге
5 598-й
Откуда
Киев, Киевская обл., Украина
Дата рождения
Зарегистрирован
Активность