Pull to refresh

Technotext

Это база: нюансы работы с Redis. Часть 1

Level of difficultyMedium
Reading time15 min
Views54K

Привет! Меня зовут Петр и мы в компании Nixys очень любим Redis. Эта база используется, если не на каждом нашем проекте, то на подавляющем большинстве. Мы работали как с разными инсталляциями Redis, так и с разными версиями, вплоть до самых дремучих, вроде 2.2. Несмотря на то, что в Интернете очень много статей и докладов по этой БД, мы в своей практике достаточно часто встречаемся с непониманием некоторых основных концепций Redis и со стороны разработчиков, и со стороны системных администраторов.

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

Читать далее

Почтовый сервер с нуля. Часть первая

Level of difficultyMedium
Reading time17 min
Views75K

Очень часто на этапе стажировки новых сотрудников мы в нашей компании сталкиваемся с типичными простыми ошибками, непониманием работы DNS и почты. При этом обучение новых сотрудников по этой теме — достаточно длительный и сложный процесс, так как сами вопросы требуют построения сложных логических цепочек в голове у начинающего инженера. В один момент мы составили свою вики и схемы для обучения и решили поделиться этим опытом на Хабре в виде серии статей, чтобы людям, которые решили связать свою жизнь с IT вообще и администрированием в частности, стало проще. Материалы этой серии предназначены для начинающих администраторов.

В этом материале будет представлена связка полноценного почтового сервера в виде Exim4+Dovecot+PostfixAdmin+RainLoop.

Читать далее

Ключевые характеристики материалов для производства печатных плат

Level of difficultyHard
Reading time10 min
Views16K

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

Читать далее

Кто на новенького: как справиться со стрессом и избежать провалов при адаптации в новой компании и команде

Reading time13 min
Views8.8K

Привет, Хабр! Я Оксана Нечитайлова, руковожу отделом сервисного дизайна в YADRO. В разработке продуктов я уже более 16 лет и за свою карьеру сменила несколько компаний, сфер бизнеса и рабочих ролей. В общем, не раз «обнулялась» и проходила периоды адаптации в новой команде или направлениях, где много неизвестного. С этим опытом (на собственных шишках) я стала замечать, какие ошибки на старте работы в компании и в новой роли мы обычно совершаем. Интересно, что в обсуждении этого вопроса с коллегами-тимлидами мы обнаружили, что они делали те же самые ошибки и вели себя похожим образом. Есть общий паттерн поведения, характерный для многих и на который можно повлиять.  

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

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

Читать далее

Укрощение примитивов синхронизации: сравниваем решения задачи с построением пула потоков на С и Go

Reading time21 min
Views5.7K

Эта статья основана на истории об одном личном челлендже. Задача звучала так: помочь с реализацией взаимодействия компонентов в программном комплексе заказчика. Иными словами, понадобилось IPC для дальнейшего развития продукта. Вызов заключался в том, что в обязательных требованиях стояло использование чистого С. Другие языки, включая С++ и Go, не рассматривались. 

В итоге я получил интересный опыт в рамках системного и параллельного программирования. Меня зовут Алексей Буреев, я работаю старшим инженером по разработке ПО в YADRO, сейчас мой основной рабочий язык программирования — Golang. В этой статье я проведу небольшой эксперимент: покажу, как можно решить одну задачу с помощью разных языков программирования. Языку С я противопоставлю Go, в основе которого есть исторические наработки проектирования языка С. Для этого немного заглянем «под капот» стандартных типов данных, которые уже были заботливо созданы для нас разработчиками языка.

Всех заинтересованных прошу под кат.

Читать далее

Уравнение с тремя неизвестными: как отлавливать баги в системах хранения данных

Reading time15 min
Views3.4K

Привет! Меня зовут Никита Гуцалов, я инженер в компании YADRO и занимаюсь разработкой ПО для системы хранения данных TATLIN.UNIFIED. Вообще с системами хранения данных (СХД) я работаю уже много лет и люблю эту тему, поскольку она постоянно бросает новые вызовы, заставляя решать довольно сложные и нестандартные проблемы, что очень увлекательно само по себе, а удачные решения приносят огромное удовлетворение.


В статье я попытаюсь погрузить читателя в проблемы, с которыми нам, инженерам YADRO, приходится сталкиваться при отладке программного обеспечения СХД. Также покажу особенности работы с такими системами. Расскажу, какие инструменты, а иногда и решения, которые мы пишем сами, приходится для этого применять. А еще постараюсь сформулировать условия, которые необходимы для нахождения причин возникновения ошибок обработки данных в системе.

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

Читать далее

Динамическая JIT компиляция C++

Level of difficultyMedium
Reading time12 min
Views6.8K


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


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


Так, на днях искал материалы про JIT компиляцию C++ в рантайме с помощью clang/llvm и поиск мне выдал мою же собственную статью трехгодичной давности: Динамическая JIT компиляция С/С++ в LLVM с помощью Clang / Хабр. В результате появилась уже эта новая статья про JIT компиляцию C/С++.

Читать дальше →

Проверка антенн при помощи векторного анализатора NanoVNA-F V2

Level of difficultyEasy
Reading time7 min
Views34K

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

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

Читать далее

Наняли 30 джунов за год: рассказываем, зачем и как

Reading time9 min
Views9.5K

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

Меня зовут Дима, я тимлид, и в моей команде этой весной появилось 3 начинающих специалиста: QA и два бэкендера. В этой статье я расскажу, как мы решились на эксперимент и почему довольны результатом. А также поделюсь опытом, как формировали требования к джунам: какие навыки проверяли на собеседовании, ставили ли требования к образованию и как отличали джунов от стажеров.

Читать далее

Шардирование (sharding). Эпизод 1: Начало и шардирование по идентификатору

Level of difficultyMedium
Reading time11 min
Views9.8K

Divide et impera (разделяй и властвуй) – древний принцип для управления чем-то большим и сложным.

Многие из нас программируют. Многие из нас делают системы, сложные системы. Но некоторым повезло работать в ситуации, когда объёмы по-настоящему огромны и требования кажутся невыполнимыми. Шардировние – один из излюбленных счастливчиками, которых зовут приключения, приемов.

Что-нибудь разбить на кусочки – это круто! Переходите на сторону шардирования у нас есть печеньки!

За кусочками!!!

Восемь признаков недо-yield вашего проекта на Python

Level of difficultyMedium
Reading time11 min
Views6.4K
half-python
Kandinsky 2.1: Умпалумпы программируют python код без yield
Иногда говорят, что код имеет запах. Это относится к стилистике написания, выбору переменных и т.п. Однако, когда речь идет про циклы, я предпочитаю использовать термин «недо-yield», характеризующий стиль работы программиста в циклах и с массивами данных.

Представим себе, что Пупа и Лупа взялись писать код на Python. Но Лупа заболел, и Пупе пришлось писать код за… него. Код, который у них в итоге получился, используется во множестве репозиториев и был тепло оценен Python-сообществом в форме нескольких PEP-соглашений. Предлагаю вам пройтись по такому коду, принюхаться и обратить внимание на некоторые строки.
Читать дальше →

Флэш-память для загрузки FreeNAS и прочих embedded OS

Reading time16 min
Views119K

Аннотация


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

Еще один NAS своими руками, часть 2: хорошие воспоминания*


*Рекламный слоган одного известного производителя памяти звучит «Good memories start here».

Практически все специалисты рекомендуют при выборе загрузочной флэшки не экономить и не использовать популярный бренд noname. Несмотря на корневую файловую систему FreeNAS версии 9 в режиме read-only, потребительские USB-флэшки компактного дизайна за полгода отказывали дважды, в обоих случаях примерно спустя пару месяцев эксплуатации. Причем оба использованных бренда, по мнению некоторых опрошенных представителей отрасли, вполне адекватные и уважаемые, в поставке откровенного брака незамеченные.


На фото: два вполне адекватных представителя крохотных флэшек на 8Гб и 16Гб

В чем же дело? Бесконечен ли ресурс чтения флэш-памяти? Попробуем разобраться.
Читать дальше

Шпаргалка для алгособеса — алгоритмическая сложность, структуры данных, методы сортировки и Дейкстра

Level of difficultyMedium
Reading time33 min
Views108K

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

Так уж повелось, что любой уважающий себя работодатель перенимает передовые^✻ методики FAANG — по этой причине практически во всех IT-собесах есть она: секция алгоритмов. Кто-то ей рад, кто-то не очень, но секция есть и уходить пока не планирует. Поэтому нужно закатать рукава и достойно встретить суровую реальность.

Читать далее

На что способны виртуальные потоки Java в обработке файлов

Level of difficultyEasy
Reading time7 min
Views6.6K

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

Предисловие

Начнем с того,что я не специалист по Java и у меня нет коммерческого опыта на этом языке. Я просто обычный кодер, который по вечерам пилит проекты на Java, а основной мой стек состоит из PHP и смеси Python + Go. В данной статье хочу с вами поделиться опытом с использованием виртуальных потоках (Virtual Threads) в обработке файлов.

Читать далее

Решение внутренних конфликтов: инженерный подход

Level of difficultyMedium
Reading time27 min
Views9.2K

Люди на Земле уже многие века как-то решают свои внутренние конфликты. Да что там говорить - это умеют делать даже обезьяны. Хотя у людей получается лучше: нам помогают не только инстинкты и развитый неокортекс, но и чужой опыт: мифы, религии, философские учения, нормы культуры, а порой даже и книги об "успешном успехе".

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

В этой статье вас ждёт:

Дизассемблирование структуры внутреннего конфликта до атомарных инструкций
Путешествие в джунгли legacy-кода, хранящегося в чертогах подсознания.
Разрешение внутренних конфликтов как выплата техдолга,
Формирование эффективных промптов для бионейросети (той, которая между ушами)
Простота: фреймворк, который подходит для решения доброй половины внутренних конфликтов
Глубина: экстремальное погружение во внутренний мир человека.

Читать далее

Аналитик vs. презентация задачи. Изучаем профессионально-деформационные диалекты коллег

Level of difficultyEasy
Reading time14 min
Views4.8K

Привет =) На связи снова Анастасия-аналитик из команды STM Labs со своей любимой темой «мягких» навыков. В статье про собеседования (первая часть тут, вторая тут) я сравнила аналитика с переводчиком с бизнесового языка на разработческий. Или наоборот.

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

Читать далее

ChatGPT-4 в помощь: используем AI в доработке простого iOS-приложения

Level of difficultyMedium
Reading time10 min
Views13K

Мне всегда было интересно, получится ли применить AI-инструменты в трудовых буднях программиста. Когда появился ChatGPT, я начал пробовать использовать его в работе, и он быстро стал для меня вспомогательным инструментом. Буквально на днях вышло его крупное обновление, и стала доступна новая функциональность, которая делает его еще удобнее для разработчика.

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

Для наглядности буду демонстрировать все на открытом pet-проекте, чтобы вы видели работу новых функций GPT-4 в действии.

Читать далее

Отказоустойчивая архитектура: почему Tarantool не падает?

Reading time8 min
Views7.6K


Основная проблема в высоконагруженных приложениях — отказоустойчивость. Нагрузка с упавших узлов в кластере должна переключаться на живые. Это кажется несложной задачей, но на практике появляется много подводных камней. Я потратил много времени на поддержку различных кластеров, построенных на Tarantool и наших кластерных фреймворках Cartridge и TDG, и сегодня расскажу вам, как обеспечивается отказоустойчивость в наших приложениях. Будет интересно всем, кто хочет подробнее узнать, как устроен фейловер в Cartridge, и тем, кто хочет узнать о нашем опыте создания автоматических фейловеров.
Читать дальше →

Запуск проекта в Kubernetes за 60 минут: инструменты, GitLab, Terraform

Reading time14 min
Views20K


Привет, Хабр! Меня зовут Илья Нырков, я архитектор в VK Cloud. В своей работе встречаюсь с желанием партнеров (это и крупный энтерпрайз, и различные стартапы) использовать Kubernetes, но их останавливает сложность поднятия, конфигурирования кластера, деплоя в нём приложений и построения CI/CD-процессов вокруг него. Я постараюсь показать на практическом примере, который вы можете повторить сами, как развернуть за сравнительно небольшое время полноценный CI/CD с рабочим приложением, доступным для внешних пользователей.
Читать дальше →

Переизобретаем файловую систему: (Open)ZFS

Level of difficultyEasy
Reading time17 min
Views23K


Хранение данных — это всегда боль, у которой может быть больше 50 оттенков: железо, кэш, гарантии, производительность, скорость восстановления при проблемах, удобство и прочее. Как решить большинство из них, при этом получив что-то легко обслуживаемое, да ещё бесплатно? Сегодня поговорим про файловые системы на примере не совсем дефолтной OpenZFS.
Читать дальше →