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

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

Send message

Топ модулей для распознавания рекапчи на Python, Node js и PHP

Level of difficultyEasy
Reading time6 min
Views1K

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

Я проанализировал рынок модулей распознавания капчи и у меня получился свой субъективный топ модулей на трех популярных языках программирования. Давайте разбираться!

Читать далее
Total votes 6: ↑3 and ↓3+2
Comments9

Трассировка на Go

Level of difficultyEasy
Reading time8 min
Views1.7K

Всем привет, этой мой первый пост на данной платформе, прошу любить и жаловать.

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

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

Как сделать «успешный» стартап?

Level of difficultyEasy
Reading time13 min
Views4K

Это продолжение истории о разработке самого удобного приложения для зубрежки английских слов инди-разработчиком. Еще одно?! — Да, но с GenAI и алгоритмами!

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

Буфер обмена веб-приложений и как он хранит различные данные

Level of difficultyEasy
Reading time17 min
Views3K

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

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

Давайте начнем с исследования различных API и их истории. Эти API имеют весьма интересные ограничения по типам данных, и мы увидим, как некоторые компании обошли эти ограничения. Мы также рассмотрим некоторые предложения, которые направлены на устранение этих ограничений (наиболее примечательное из них — Web Custom Formats).

Если вам хотя бы раз было интересно, как работает веб-буфер обмена, то эта статья для вас.

Читать далее
Total votes 18: ↑17 and ↓1+17
Comments5

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

Level of difficultyEasy
Reading time6 min
Views42K

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

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

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

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

Level of difficultyMedium
Reading time10 min
Views2.1K

В современном быстро развивающемся и ориентированном на данные мире создание сложных 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.9K
image


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

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

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

Level of difficultyMedium
Reading time16 min
Views7.2K

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

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

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

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

Level of difficultyMedium
Reading time7 min
Views3.3K

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

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

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

Level of difficultyEasy
Reading time7 min
Views1.3K

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

Водоканал управляет почти 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.4K

Привет. Меня зовут Николай Шувалов, я занимаюсь коммерческим программированием около семи лет, владею 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.7K

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

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

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

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

Level of difficultyEasy
Reading time4 min
Views2.4K

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

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

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

Reading time12 min
Views42K

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

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

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

Level of difficultyMedium
Reading time7 min
Views2.6K

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

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

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

Reading time6 min
Views8.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.9K

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

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

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

Читать далее
Total votes 20: ↑8 and ↓12+2
Comments10
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