user11275363

user11275363

Пикабушник
Дата рождения: 4 марта
6187 рейтинг 57 подписчиков 0 подписок 3 поста 1 в горячем
1

Прошло 3,5 месяца после поста про 150 000 этикеток. Теперь у меня в kleykod клиенты, 4 миллиона кодов и дубли заказов на полмиллиона

3,5 месяца назад я написал тут пост про 150 000 этикеток с кодами маркировки за 12 минут. Он собрал 287 тысяч показов, 4 207 плюсов и 703 комментария. Я посчитал: 264 человека мне респектнули, 106 обосрали, 333 прочитали и промолчали. В 65 комментах мат, самая глубокая ветка срача — 13 этажей, и к концу там спорили уже не со мной, а друг с другом. Заметная часть объясняла мне, что я дурак и не знаю, что такое API Честного Знака.

Рассказываю, что было дальше. Спойлер: теперь я знаю API Честного Знака. Лучше бы не знал.

Звонок

Через неделю после поста мне позвонила женщина. Назовём её Д. Компания-импортёр, одежда, 73 GTIN, товар едет из Казахстана и Китая. Маркировку они везли первый раз в жизни, а сервис, которым пользовались, упёрся в лимит 150 тысяч кодов на выгрузку. Ей же надо было сильно больше — и чтобы DataMatrix отдельными наклейками, и агрегация в блоки и короба, потому что швеи в Казахстане должны это всё наклеить и собрать.

Я сказал: лимит — это не Честный Знак, это ваш сервис. Через API можно заказать до 2 миллионов кодов. В комментах меня как раз в этот момент называли дураком, поэтому отступать было некуда.

Так у моего сервиса появился клиент — целая компания. А у меня — вторая работа, ночные сообщения и человек, который тестирует мои фичи лучше любого QA-инженера.

Как я чуть не заказал кодов на всю зарплату

Апрель. Переезжаем с одного API Честного Знака на другое (в первом не оказалось одежды — да, так бывает). Деплоим на прод. Всё работает. Красота.

Вечером пишет клиентка: у нас в кабинете Честного Знака куча задублированных заказов. Кабинет — её, своего доступа у меня нет, так что подключаюсь к её компьютеру через AnyDesk и смотрю сам: заказов кодов — как талонов в поликлинике. Система при таймауте решала, что заказ не создался, и заказывала ещё раз. И ещё. И ещё.

Всего надублировалось 450 тысяч кодов.

Нюанс, от которого мои два АПИшка и пятая точка сжались так, что аж холодок по телу: код маркировки стоит 60 копеек с НДС. 450 тысяч дублей — это 270 тысяч рублей за воздух. За эту задачу я пытался заработать 2,5 тысячи. А мог заработать минус 270 тысяч.

Слава богу, у клиентки в Честном Знаке стояла оплата по нанесению: деньги за коды списываются не при заказе, а когда код реально нанесён на товар. Значит, было окно. Сидел через AnyDesk в чужом компьютере и вручную аннулировал заказы, сверяясь с нашей базой, чтобы случайно не прибить настоящий — за который казахи уже ждут этикетки. Список аннулированного скачал в CSV. На случай, если в комментах спросят «а докажи».

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

С тех пор в проекте есть «защита от дублей», и когда нейронка предлагает отрефакторить тот кусок кода, я реагирую как бабка на предложение переставить иконы.

Один битый код из миллиона

Май. У клиентки партия под миллион кодов, выгружала она их через сторонний сервис. И в этой партии она находит один битый код. Сама. Один из миллиона. Поддержка того сервиса разводит руками — файл большой, кода не видно, будем выяснять.

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

Клиентка написала: «Молодец нейронка». Считаю это официальной благодарностью в адрес искусственного интеллекта от лица российского бизнеса.

4 миллиона кодов

Потом объявился руководитель повыше. Задача: 4 миллиона кодов, которые лежат в CSV, превратить в DataMatrix и собрать PDF под их макет — сразу в типографию.

Три месяца назад я бы от такой цифры вспотел. Но к этому моменту у меня уже всё было обкатано боем: библиотеки, которые превращают код маркировки в DataMatrix-картинку и укладывают её в PDF, протестированы на прошлых партиях. Все грабли собраны заранее.

Поднял под задачу отдельный сервер. 4 миллиона этикеток обработались за 4 часа. В прошлом посте 150 тысяч заняли 12 минут — если пересчитать в штуки в минуту, я ещё и разогнался.

Сколько заплатили — промолчу. Скажу так: я продешевил и сам это знаю, не пишите об этом в комментах. Прайс с тех пор подрос.

Что в итоге

С одного поста на Пикабу за 3,5 месяца:

— компания-клиент, которая платит за сервис и заказывает работы: подписка, разовые выгрузки, сейчас — проект по проверке агрегации; — человек из мира заводской интеграции маркировки в личке («вдруг нам будет взаимно интересно»); — 57 подписчиков, из-за которых мне теперь стыдно не писать посты; — и переписка с клиенткой на 6 963 сообщения. С мамой у меня меньше. Мама, прости.

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

Мораль не поменялась: пока большие сервисы упираются в лимиты и «будем выяснять», обычный человек с нейронкой и упрямством может закрыть дырку — и дырка начнёт платить. Даже если в комментах он дурак.

P.S. Хейтеры из того поста, привет. Я вас посчитал: 106. Про API Честного Знака теперь можете спрашивать меня.

Показать полностью
5987

150 000 этикеток с кодами маркировки за 12 минут - как рвется жопка, а не кошелек!!!1

Пишет мне клиентка: «Нужно сгенерировать 150 тысяч этикеток с DataMatrix кодами Честного Знака. За один раз. Сможете?»

Конечно смогу. Когда я не мог-то. Мне предлагают заработать, а я что — откажусь?

Я делаю сервис для генерации этикеток. Штрихкоды Wildberries, коды маркировки Честного Знака, и самое вкусное — объединение того и другого на одной наклейке 58 на 40 миллиметров. Обычный заказ — двести-пятьсот штук. Ну тысяча иногда. А тут сто пятьдесят тысяч - можно сказать ОПТОМ . Я такие цифры только в калькуляторе видел.

Сказал «да». А дальше начался цирк.

PDF на 600 мегабайт, серьёзно?

Знаете, что бесит в маркировке больше всего?

Честный Знак выдаёт коды в PDF. Не в CSV. Не в Excel. В PDF. Каждый код — отдельная страница. Сто пятьдесят тысяч кодов — сто пятьдесят тысяч страниц. Шестьсот с лишним мегабайт.

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

Источник: <!--noindex--><a href="https://d.pikabu.ru/story/150_000_yetiketok_s_kodami_markirovki_za_12_minut__kak_rvetsya_zhopka_a_ne_koshelek_13817409?u=http%3A%2F%2Fnews.drom.ru&t=news.drom.ru&h=a049ee7c6f44b51ef04534916a8dae4ac97c2394" title="http://news.drom.ru" target="_blank" rel="nofollow noopener">news.drom.ru</a><!--/noindex-->, «Дневник Хача» / <!--noindex--><a href="https://d.pikabu.ru/story/150_000_yetiketok_s_kodami_markirovki_za_12_minut__kak_rvetsya_zhopka_a_ne_koshelek_13817409?u=http%3A%2F%2FYouTube.com&t=YouTube.com&h=368a7b01eacdbf0e5b44f1804a2b675f69d9a938" title="http://YouTube.com" target="_blank" rel="nofollow noopener">YouTube.com</a><!--/noindex-->

Источник: news.drom.ru, «Дневник Хача» / YouTube.com

Я написал свой декодер, который вытаскивает коды обратно из этих PDF-ок. По сути, я раскодирую то, что система закодировала без причины. Абсурд? Абсурд. Но если бы ЧЗ выдавал коды нормально — половины моего сервиса не существовало бы. Так что спасибо, Честный Знак, за бизнес-модель.

Ладно, загружаю этот PDF-монстр на сервер. Ответ: 413 — слишком большой файл. Мой сервер настроен на 50 мегабайт. Для обычных заказов хватает за глаза. Для этого — нет.

Поднял лимит. Загрузка прошла. Сервер начал обработку и… тишина. Две минуты — таймаут. Соединение оборвалось. Ну да, 120 секунд на ответ, а тут работы на полчаса минимум.

Три часа ночи, или наверное утра, отдельный сервер, один я

Стало понятно: на основном сервере это не сделать. Он заточен под другое — много мелких быстрых запросов. А тут один запрос размером с небольшую базу данных.

Арендовал отдельную машину. Восемь ядер, шестнадцать гигов оперативки. Развернул копию системы с поднятыми лимитами — загрузка до гигабайта, таймауты до часа. Основной сервер работает как обычно, пользователи ничего не замечают.

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

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

42 минуты. Нет, это слишком

Первый тестовый прогон — 42 минуты на 150 тысяч этикеток. Декодирование шло последовательно, страница за страницей. Восемьдесят штук в секунду. Звучит быстро, но умножьте на сто пятьдесят тысяч.

Для разового заказа — ну ладно, потерпит. Но мне стало обидно. Восемь ядер простаивают, а я гоняю всё в один поток как дурак.

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

Двенадцать минут. От загрузки до готового файла — двенадцать минут. Гигабайтный PDF на выходе открывается и печатается. Я реально сидел и смотрел на это с чувством, которое, наверное, испытывают люди, когда их ребёнок первый раз встаёт на ноги. Ну, примерно.

«Всё готово, присылайте файлы»

Написал клиентке. Сервер поднят, тесты прошли, сто пятьдесят тысяч за двенадцать минут — присылайте реальные файлы, запускаем.

Тишина.

День тишины. Ладно, человек занят. Второй день. Аренда сервера тикает. На третий написал ещё: нужно ещё или нет?

«Нет, у нас отменилось.»

Всё. Четыре слова. Без объяснений. Без «спасибо, что подготовились». (Хотя они откуда могли знать мою бессонную ночь)

Без «может, в следующем месяце». Просто — отменилось.

Как говорится " Ваши ожидания - ваши проблемы"

Потом сказали: босс заказал маркировку в Китае. На фабрике. То есть вся эта история с «срочно нужно 150 тысяч» — оказалась просто одним из вариантов, который рассматривали параллельно. И выбрали не меня.

Свернул сервер. Отключил аренду. Пошёл делать чай с пустырником, ну сами понимаете мне 34 уже.

Про конкурентов и про «а зачем ты вообще это делаешь»

Знаете, что самое смешное? На рынке есть ребята, которые берут по 30 копеек за этикетку. Тридцать копеек! У меня — четырнадцать. Я дешевле в два раза. И при этом у них пять тысяч клиентов, а у меня… ну, сильно меньше...

ну как так сильно получается, как количество салютов в городе в глубинке.

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

А ещё на рынке есть сервисы, где ты загружаешь коды и получаешь результат через полчаса. У меня — через минуту. Но людям не с чем сравнить, они думают, что полчаса — это нормально.

Я не жалуюсь. Ладно, жалуюсь. Но продолжаю делать.

Потому что я знаю, какие боли есть у людей, которые маркируют товары. Я изучил этот рынок вдоль и поперёк. Коды только в PDF — решил. Объединение штрихкода WB и кода ЧЗ на одной наклейке — вместо того, чтобы клеить две — решил. Свой шаблон этикетки, куда штампуются коды — решил. Скорость обработки, от которой у конкурентов бы челюсть отвисла — тоже.

И вот сидишь такой, всё решил, всё работает, быстрее и дешевле всех — а клиент уходит маркировать в Китай.

Зачем я это пишу

Не для рекламы. Хотя, конечно, если вы маркируете товары для Wildberries — ну, вы поняли, гуглите KleyKod.

Я пишу, потому что накипело. Делаешь продукт один. Сам пишешь код, сам делашь СЕО, сам поднимаешь серверы, сам оптимизируешь, сам общаешься с клиентами. Приходит запрос на 150 тысяч — не спишь ночь, поднимаешь инфраструктуру, ускоряешь в три с половиной раза. А потом четыре слова: «у нас отменилось».

И ты не можешь даже нормально расстроиться, потому что через час пишет следующий клиент с вопросом «а у вас штрихкод для Вайлдберриз можно сделать?» — и ты отвечаешь «конечно, сейчас покажу». Потому что а что ещё делать.

В маркировке вообще так: сегодня горит, завтра не надо. Поставщик договорился иначе, склад передумал, логистика поменялась, босс решил делать в Китае. Ты готовишься к марафону, а тебе говорят «забег отменили, но спасибо что размялся».

Но знаете что?

Когда придёт следующий заказ на 150 тысяч — а он придёт, потому что маркировка с марта 2026-го стала обязательной почти для всех категорий товаров — я подниму сервер за час, а не за ночь. И сделаю за 12 минут, а не за 42. Потому что уже проходил.

А жопка? Жопка не порвалась. Жопка закалилась.

Показать полностью 1
32

Сделал расширение, которое убирает водяной знак Gemini при скачивании. Бесплатно

Кто генерит картинки в Google Gemini — знает боль. Скачиваешь файл, а там полупрозрачный водяной знак Nano Banana в углу. Каждый раз.

Можно руками вырезать в фотошопе. На одну картинку — минуты две.

Сделал расширение, которое убирает водяной знак Gemini при скачивании. Бесплатно

На десять — двадцать минут жизни в минус. Можно загрузить в онлайн-ремувер, но тогда твои картинки уедут на чей-то сервер.

Я программист, мне было лень. Поэтому написал Chrome-расширение Banana Clean. Работает так: нажимаешь «скачать» в Gemini — файл прилетает уже чистый. Всё.

Без кликов, без загрузок куда-то, без регистрации.

Как это устроено: расширение перехватывает скачивание и чистит водяной знак через Canvas API прямо в браузере. Картинка никуда не уходит — всё локально.

Что умеет:

— Автоматически убирает водяной знак при скачивании

— Сохраняет в PNG, WebP или JPEG — на выбор

— Переименовывает файлы в читаемые имена (а не «image (47).png»)

— Работает на gemini.google.com и aistudio.google.com

Сделал расширение, которое убирает водяной знак Gemini при скачивании. Бесплатно

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

За 20 дней набралось 857 установок, рейтинг 4.6 в Chrome Web Store. Не реклама — я правда один это делаю, без команды и бюджета.

Ссылка на расширение: ЗДЕСЯ

Сайт: ТУТА

Если пользуетесь Gemini для генерации — попробуйте, мне будет приятно. И если не сложно — оставьте отзыв в магазине, это реально помогает подняться в поиске среди конкурентов.

Готов ответить на вопросы в комментах.

Сделал расширение, которое убирает водяной знак Gemini при скачивании. Бесплатно
Показать полностью 3
Отличная работа, все прочитано!

Темы

Политика

Теги

Популярные авторы

Сообщества

18+

Теги

Популярные авторы

Сообщества

Игры

Теги

Популярные авторы

Сообщества

Юмор

Теги

Популярные авторы

Сообщества

Отношения

Теги

Популярные авторы

Сообщества

Здоровье

Теги

Популярные авторы

Сообщества

Путешествия

Теги

Популярные авторы

Сообщества

Спорт

Теги

Популярные авторы

Сообщества

Хобби

Теги

Популярные авторы

Сообщества

Сервис

Теги

Популярные авторы

Сообщества

Природа

Теги

Популярные авторы

Сообщества

Бизнес

Теги

Популярные авторы

Сообщества

Транспорт

Теги

Популярные авторы

Сообщества

Общение

Теги

Популярные авторы

Сообщества

Юриспруденция

Теги

Популярные авторы

Сообщества

Наука

Теги

Популярные авторы

Сообщества

IT

Теги

Популярные авторы

Сообщества

Животные

Теги

Популярные авторы

Сообщества

Кино и сериалы

Теги

Популярные авторы

Сообщества

Экономика

Теги

Популярные авторы

Сообщества

Кулинария

Теги

Популярные авторы

Сообщества

История

Теги

Популярные авторы

Сообщества

Недвижимость и ремонт

Теги

Популярные авторы

Сообщества