Pull to refresh
-6
0
Иван @wendel

Умею делать бэкенды и фронтэнды

Send message

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

Level of difficultyEasy
Reading time6 min
Views40K

Я всегда знал, что если отвлекать человека во время работы, это вредит делу. Но до конца не осознавал, насколько это серьёзная проблема. Особенно для разработчиков ПО.

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

Читать далее
Total votes 54: ↑46 and ↓8+44
Comments86

Использование Temporal для эффективного управления жизненным циклом документов

Level of difficultyMedium
Reading time10 min
Views1.4K

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

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

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

Почему попытка принимать верные решения —  это гарантированный способ разочароваться в себе и в мире

Reading time3 min
Views12K

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

Читать далее
Total votes 52: ↑36 and ↓16+26
Comments37

Разделяемость данных между микросервисами

Reading time7 min
Views4.7K
image


Когда я только начинал работать с микросервисами, я чрезмерно буквально следовал общему правилу «не допускайте, чтобы два сервиса совместно использовали один источник данных».
Этот тезис фигурирует повсюду в Интернете как заповедь: «да не раздели ты базу данных между двумя сервисами» и, определённо, в нём есть смысл. Сервис должен владеть собственными данными и иметь возможность свободно менять их схему так, как будет сочтено нужным, не меняя при этом API, направленный вовне.

Но здесь есть важная тонкость, которую я осознал далеко не сразу. Чтобы как следует применять это правило, необходимо различать совместное использование источника данных и совместное использование данных как таковых.
Читать дальше →
Total votes 14: ↑13 and ↓1+15
Comments2

Как мне взбрело в голову свой Notion-like редактор написать

Level of difficultyMedium
Reading time16 min
Views6.8K

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

В статье хочу рассказать про атрибут contenteditable у HTML-элементов, про сопутствующие проблемы при его использовании, про кастомное форматирование и про работу с выделенными участками текста.

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

Разбираемся в серверных и клиентских компонентах в Next.js: когда, как и почему?

Level of difficultyMedium
Reading time7 min
Views2.1K

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

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

Ни минуты даунтайма. Автоматизированная система управления обращениями для бизнеса

Level of difficultyEasy
Reading time7 min
Views1.2K

Как мы помогли ГУП «Водоканал Санкт-Петербурга» улучшить работу с обращениями жителей самого северного мегаполиса мира.

Водоканал управляет почти 18 000 км водопровода и канализации. Каждый день предприятие делает более комфортной жизнь 5 миллионов человек, десятков тысяч предприятий и организаций Петербурга. Чтобы ускорять работу с обращениями внешних потребителей и заявками сотрудников для оказания качественного сервиса, нужна налаженная работа с обращениями. Для этого предприятию требовалось современное и удобное решение. Им стала автоматизированная система управления обращениями на базе Naumen, которую внедрила СИГМА.  

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

Хабр, GPT, корпоративные блоги и БМЛы: оцениваем глубины ужаса

Level of difficultyEasy
Reading time5 min
Views19K

Я не испытываю ненависти ни к корпоративным блогам, как таковым, ни к большим языковым моделям в целом. А вот к мусорному контенту, созданному левой пяткой ради ссылок на сайт или телеграм-канал - испытываю, и еще как. И как раз вот тут встретились два одиночества - ленивые копирайтеры мусоропроизводители и генеративные сети. Получилась, как вы понимаете, вовсе не конфетка.

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

За подробностями, результатами, ужасом и даже кодом на VB.NET приглашаю под кат!

Читать далее
Total votes 225: ↑221 and ↓4+279
Comments112

Как Apache Arrow поможет управиться JS с большими данными

Level of difficultyMedium
Reading time6 min
Views2.2K

Привет. Меня зовут Николай Шувалов, я занимаюсь коммерческим программированием около семи лет, владею Rust, JavaScript, PHP. Сейчас я работаю в отделе данных билайна. Наша платформа позволяет делиться с партнерами данными, не раскрывая их. Например, можно расширить данные с помощью фильтра Блума. 

Arrow в сравнении со строковыми форматами

Возьмём простую таблицу, которая состоит из трех столбцов: телефона, даты и имени. Рассмотрим, как она будет выглядеть в строковом и столбчатом форматах. Для строкового формата мы возьмем csv и json, для столбчатого формата структура будет одинаковой. Если же таблица состоит, например, из миллиона строк, а нужно получить имя на строке с номером 10 000, то придется бежать по всей строчке. В json то же самое. А в столбчатом формате ситуация иная — значения привязаны к столбцам. Когда мы хотим получить имя на строке 10 000, то сразу обращаемся к этому столбцу и получаем все его данные. 

Существуют RA (random access) файлы, в которых можно пропускать заданное количество строк, но все равно парсеру нужно читать и анализировать пройденные строчки.

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

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

Level of difficultyEasy
Reading time5 min
Views3.2K

В апреле мы провели Naumen Analyst Meetup, на котором обсудили важные для аналитиков навыки. Например, способности эффективно общаться с заказчиком, доходчиво объяснять, внимательно слушать и самое главное — задавать правильные вопросы. 

Junior-специалистам, как правило, сложнее всего дается последний пойнт. О нем и был доклад Саши Николаева, руководителя группы бизнес-анализа в Naumen,  «Как не бояться задавать глупые вопросы и копать в глубь».

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

Wireframe vs. mockup vs. prototype: в чем разница?

Level of difficultyEasy
Reading time4 min
Views1.9K

От переводчика. Привет! Цель перевода этой статьи проста - провести четкие границы между обозначенными выше терминами. При проектировании новых сценариев для B2B CRM я столкнулся с тем, что каждый человек в команде понимал "макет" или "прототип" по-своему. Также выяснилось разное понимание, кто в команде за какие технологии прототипирования должен отвечать. Я провел исследование материалов по теме и хочу поделиться тем материалом, после которого для меня "все встало по полочкам".

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

Выбираем дешёвый VPS-сервер. Что почём в 2024 году?

Reading time12 min
Views24K

Всем привет! В начале года я писал публикацию «Можно ли заработать на партнёрских программах хостеров в 2024 году? Пробуем посчитать» — просмотров и комментариев было немного, но в личке было немало вопросов, а я с тех пор смог заметно поправить своё финансовое положение на этих самых партнёрках. Но сегодня речь пойдёт чуть по другой, пусть и смежной теме — не так давно у меня появилась необходимость в виртуалке для тестирования разрабатываемого мной ПО, и как часто бывает, встал вопрос, у какого провайдера заказывать. В своём выборе хостеров для обзора я в первую очередь решил отталкиваться от стоимости их услуг. И в этой статье я хотел бы сравнить несколько хостингов, которые были первыми в гугле по запросу «Дешёвый VPS-сервер» — спешу поделиться с вами полученным опытом и выводами.

Читать далее
Total votes 46: ↑43 and ↓3+63
Comments49

React Native: мифы, претензии и реальные проблемы

Level of difficultyMedium
Reading time7 min
Views2.4K

Привет, Хабр! Меня зовут Кирилл, я ведущий разработчик в Lad. В статье, опираясь на мой реальный опыт, хочу развеять все мифы о React Native, которые накопились, и рассказать, на что способен этот кроссплатформенный фреймворк.

Читать далее
Total votes 14: ↑13 and ↓1+15
Comments2

6 главных типов веб-уязвимостей, о которых должен знать каждый бэкендер

Reading time6 min
Views7.2K

Привет, Хабр! На связи Виталий Киреев, руководитель R&D SpaceWeb. Это первая часть статьи про веб-безопасность — здесь я расскажу про главные уязвимости Server Side, покажу примеры и объясню, как защищать данные. 

Читать далее
Total votes 18: ↑9 and ↓9+4
Comments14

Как обойти лимит Telegram API для групп свыше 10,000 участников

Level of difficultyEasy
Reading time3 min
Views4.7K

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

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

Эта инициатива казалась нам многообещающей, однако в процессе реализации мы столкнулись с серьёзным ограничением. При попытке загрузить список пользователей из группы на 13,000 человек, система смогла обработать только 10,000. Это ограничение API Telegram значительно усложнило выполнение задуманного плана, требуя от нас дополнительных технических решений.

Читать далее
Total votes 20: ↑8 and ↓12+2
Comments10

Представляем gqlgen: генератор серверов GraphQL для Go

Reading time9 min
Views3K

В 99designs мы находимся на пути деконструкции нашего PHP-монолита в микросервисную архитектуру, при этом большинство новых сервисов пишется на Go. В этот период наша фронтенд-команда также применила безопасность типов, перейдя с Javascript на TypeScript и React.

После того как мы внедрили безопасность типов в бэкенд и фронтенд, стало очевидно, что наши конечные точки REST, созданные на заказ, не могут преодолеть разрыв между типами. Нам нужен был способ объединить эти системы типов и распутать наши конечные точки API.

Нам нужна была система безопасности типов для API. GraphQL выглядел многообещающе. Однако, изучив его, мы поняли, что не существует серверного подхода, который бы отвечал всем нашим требованиям. Поэтому мы разработали свой собственный, который мы назвали gqlgen.

Читать далее
Total votes 7: ↑4 and ↓3+1
Comments5

Как выдавать бесплатные SSL сертификаты с помощью certbot, Nginx и Docker

Level of difficultyMedium
Reading time5 min
Views24K

Всем привет! Одна из моих рутинных задач - это подъем новых проектов и микросервисов в облаках. Для этого практически всегда нужны домены и поддомены с наличием SSL сертификата. У меня выработался подход, с помощью которого я автоматизировал процесс выдачи сертификатов с помощью certbot. О чём и хочу рассказать.

Читать далее
Total votes 18: ↑15 and ↓3+12
Comments27

DDD в golang. Превозмогая трудности

Level of difficultyMedium
Reading time5 min
Views10K

В последнее время достаточно много выступлений, посвященных реализации подходов Domain Driven Design(DDD) в golang.

Я не буду останавливаться на value object, они в golang хорошо реализуются с помощью type defintions. А разберу работу с изменением аггрегатов.

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

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

Книги, которые помогут прокачать писательские скилы

Reading time4 min
Views5K

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

Начать лучше с основополагающих вещей – книги «Я, редактор», где изложена суть современного подхода к подготовке интересных публикаций, а также объясняется смысл редакторской работы. Многие думают, что она связана лишь с правкой текстов, но это не так.

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

Безотказные очереди в RabbitMQ: Гарантированная доставка сообщений

Level of difficultyMedium
Reading time4 min
Views17K

RabbitMQ - это открытая реализация протокола AMQP (Advanced Message Queuing Protocol), является мощным и гибким брокером сообщений. Он обеспечивает надежное и эффективное взаимодействие между компонентами системы, предоставляя разработчикам инструменты для создания гибких и масштабируемых архитектур.

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

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

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

Information

Rating
Does not participate
Registered
Activity

Specialization

Backend Developer, Fullstack Developer
Senior
PHP
Docker
Linux
Git
OOP
Symfony
Doctrine
Golang
Node.js
TypeScript