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

Компания Quadcode временно не ведёт блог на Хабре

Сначала показывать

Бизнес хочет свой блог. Стоит ли начинать? Наша прощальная статья на Хабр

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

Мы в Quadcode мечтали сюда попасть целых 8 лет, но все не находилось времени, а 3 года назад компания наняла бренд-менеджера (меня), чтобы сдвинуть желание иметь свой блог с мертвой точки. Так мы и начали свою блогерскую карьеру на Хабре на русском языке. Это наша финальная статья, где мы не только подводим итоги нашего Хабр-путешествия, но и рассказываем про то, как начать вести собственный корпоративный блог и что вас ждет на этом пути. В статье будет много рефлексии, поэтому, если ваше настроение располагает, – добро пожаловать под кат! 

Читать далее
Всего голосов 77: ↑62 и ↓15+47
Комментарии63

Как обрабатывать ошибки в Golang – рассказываем на собственном примере

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

Ошибки это один из самых важных аспектов любого языка программирования. То, как обрабатываются ошибки, влияет на приложения многими способами. То, как определяются ошибки в Golang, немного отличается от таких языков как Java, Python, Javascript. В Go ошибки – это значения.

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

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

Как появляются дизайн-системы: рассказываем и показываем на собственном примере

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

-

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

5 самых дорогостоящих ошибок ПО в истории: как потерять миллиарды долларов из-за неосторожности или невнимательности

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

Ошибки, намеренные или нет, часто приводят к убыткам бизнеса. Причем убытки бывают просто огромные – десятки, сотни миллионов долларов США. В некоторых случаях и вовсе миллиарды. В одном только 2022 году проблемы с ПО принесли глобальному рынку ущерб на $7 трлн. Ежегодно лишь в США бизнес недосчитывается $2,41 трлн. Чаще всего проблема заключается во взломе корпоративного программного обеспечения. Но бывает и так, что киберпреступники вовсе ни при чем, компании сами себе "стреляют в ногу", если так можно выразиться. Давайте посмотрим, к чему может привести ошибка в коде ПО, неосторожность или даже халатность разработчика.

Читать далее
Всего голосов 17: ↑11 и ↓6+5
Комментарии1

Мы тоже отправили сотрудникам компании фишинговое письмо

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

Как говорили китайские юниты в С&С: Generals "No system is safe" – все системы уязвимы. И люди уязвимы не меньше. Про фишинг вроде бы все знают, но он по-прежнему остаётся самым популярным и результативным методом получения доступов и данных. В частности в сезоны праздников или распродаж, когда атакующие особенно активны. 

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

Читать далее
Всего голосов 8: ↑6 и ↓2+4
Комментарии20

Docker для самых маленьких

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

Когда я только начинал работать с Docker, мне было очень сложно разобраться во всём. Но вам не нужно беспокоиться. Я помогу.

Docker — это превосходный инструмент, который просто нельзя игнорировать. Docker используется повсюду!

Читать далее
Всего голосов 26: ↑9 и ↓17-8
Комментарии5

Менторство в команде Ops: взгляд со стороны менти

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

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

Это не хардкорная статья: в ней не будет примеров кода или разбора инструментов. Мы хотим показать, какие задачи даём новичкам в команде, чем менторы помогают с онбордингом и как ребята субъективно оценивают пользу процесса.

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

Менторство в команде Ops: взгляд со стороны ментора

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

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

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

Ретроспектива работы с bare metal Kubernetes, или Туда и обратно

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

Команда Kubernetes Platform в Quadcode внедряет, поддерживает и сопровождает Kubernetes и все процессы вокруг него. Пять с половиной лет наши кластеры и подходы менялись и эволюционировали. В статье расскажем, с чего мы начинали, к чему пришли, и как получилось сделать сопровождение bare metal кластеров комфортным.

Читать далее
Всего голосов 9: ↑8 и ↓1+7
Комментарии4

Зачем нам понадобились agile-поезда и как они устроены

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

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

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

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

B-Tree индекс и его производные в PostgreSQL

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

Меня зовут Азат Якупов, я люблю данные и люблю использовать их в разных задачах. Сегодня хочу поделиться своим опытом относительно B-Tree индексов в PostgreSQL. Рассмотрим их топологию, синтаксис, функциональные B-Tree индексы, условные B-Tree индексы и включенные B-Tree индексы.

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

Менторство в команде Ops: внедрение процесса и первые результаты

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

Привет, Хабр. Меня зовут Юрий Зорин, в Quadcode я руковожу Ops-департаментом. В марте 2022 года мы внедрили в команде внутреннее менторство: теперь у наших junior-инженеров есть наставник, который помогает развивать нужные навыки. В этой статье хочу рассказать, какой путь мы прошли на текущий момент и подвести первые итоги.

Читать далее
Всего голосов 7: ↑5 и ↓2+3
Комментарии4

Как работать с секретами в Golang, чтобы минимизировать хаос

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

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

Меня зовут Сергей Киммель, я PHP Developer, Golang Developer и руководитель отдела разработки торгового движка. Сегодня поделюсь опытом своей команды в работе с секретами. Расскажу о проблемах, с которыми мы столкнулись, и об их решении. Дам варианты организации работы с секретами и покажу пример организации Golang-кода.

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

Эволюция архитектуры интернет-телефонии Quadcode

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

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

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

Типы таблиц в PostgreSQL: clustered, foreign, partitioned и inherited tables

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

Меня зовут Якупов Азат, я дата-архитектор Quadcode, и с вами продолжение саги о типах таблиц в PostgreSQL. В этой части речь пойдёт про кластеризованные, внешние, партицированные и наследуемые таблицы. Посмотрим на примеры их создания, области применения, плюсы и минусы их использования. 

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

Типы таблиц в PostgreSQL: logged, unlogged и temporary tables

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

В PostgreSQL существует большое количество разных типов таблиц. Каждая из них предназначена для решения конкретных задач. Самая распространённая и известная — heap table или стандартная таблица. Про её структуру я рассказывал в прошлой статье. Стандартная таблица позволяет хранить строки, обновлять данные, делать OLAP и OLTP-запросы.  

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

Читать далее
Всего голосов 26: ↑24 и ↓2+22
Комментарии2

Как мы избавились от пинг-понга задачами между разработкой и QA

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

Я в IT больше девяти лет и успел поработать в ряде интересных проектов, но самым большим своим достижением на данный момент считаю налаживание процессов в команде Billing API. Статья — именно об этом. Расскажу о наших проблемах во взаимодействии между разработчиками и QA-инженерами и том, как мы эти проблемы решали.     

Читать далее
Всего голосов 10: ↑9 и ↓1+8
Комментарии7

Веб-фреймворки для Golang в 2022 году: оптимальные варианты для разработчика

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

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

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

Как тимлиду разработки составить план развития тестировщиков

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

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

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

Возможности Heap Table в PostgreSQL

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

Меня зовут Якупов Азат, я дата-архитектор Quadcode. В индустрии я больше 20 лет, из них больше 6 лет — в архитектуре. Эта статья — немного сокращенный пересказ моего выступления на митапе по теме «Heap Table в PostgreSQL». 

Речь в тексте пойдет об обычных таблицах, с которых начинается вся дата-инженерия. Посмотрим на то, как метаданные располагаются в Postgres, разберемся, что такое table page и fillfactor, а также поближе познакомимся с TOAST-таблицами.

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