Pull to refresh
4
Евгений@Mellornread⁠-⁠only

В настоящее время занимаюсь web-разработкой

Send message

One-shot промптинг. Как я начал вайбкодить в 10? раз быстрее

Level of difficultyEasy
Reading time6 min
Reach and readers34K

Вообще, я менеджер.

Но когда-то писал код и всегда любил это занятие. Серьезно прогал мобильные приложения, и даже заработал за один из ответов на SO больше 100 звездочек.

Но с тех пор прошла куча времени.

И последнее время меня вновь увлекла эта тема. А как она может увлечь современного человека, измученного миллиардом фреймворков и отставшего от прогресса лет на 15?
Конечно-же курсором и вайб-кодингом.

И я начал кодить.

Собрал несколько ботов, потом замахнулся на CMS. Сейчас даже делаю свою тулзу для запуска LLM-пайплайнов с импортом их из n8n.

Но в процессе всего этого неизменно сталкивался с двумя проблемами

1) Cursor (и брат его Windsurf) паршивейшим образом обходится с нетипизированными и слабо-типизированными языками. Изобретает названия переменных, меняет их по ходу, и вообще, забивает на это огромный и толстый... За пределами этого кодит он неплохо. Но данная штука лично у меня порождает 90% багов.
2)...

Читать далее

Как понять, выдержит ли ваш сервис нагрузку: метрики, которые должен знать каждый инженер

Level of difficultyEasy
Reading time6 min
Reach and readers8.4K

«А сколько пользователей выдержит наш сервис?»

Вопрос звучит просто, но каждый раз ставит в тупик. Его задают на демо, на встречах с заказчиками, менеджеры, иногда даже сами разработчики.

Когда‑то, ещё в школьные годы, я читала журнал «Хакер» и мечтала, как было бы здорово «ломать серверы» и находить их слабые места.

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

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

Тем не менее, многие команды избегают нагрузки.

«Мы уже проверяли это в начале проекта — зачем снова?»

«Сложно, долго, не для нас.»

«Сделайте отчёт, главное чтобы красиво смотрелось.»

А иногда — просто страшно увидеть, как система покажет себя в реальных условиях.

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

Читать далее

Не нужно оверинжинирить сокращатель ссылок

Level of difficultyMedium
Reading time4 min
Reach and readers3.7K

На Reddit я наткнулся на статью про обработку создания 100 тысяч коротких URL в секунду1. [Прим. пер.: автор статьи по ссылке создал три варианта системы; третий, наилучший, по его мнению, вариант при помощи кластера-координатора делит нагрузку на несколько ECS-воркеров, использует DynamoDB TransactWrite для пакетных условных вставок, а для устойчивости применяет кэш Redis.]

Какой же это запутанный оверинжиниренный бардак!

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

Читать далее

Задачи на собеседованиях. Денежные переводы в SQL. Обновление счетов и уровни изоляций

Level of difficultyMedium
Reading time4 min
Reach and readers17K

Задачи на собеседованиях. Денежные переводы в SQL. Обновление счетов и уровни изоляций

Задача перевода денег в первом приближении сводится к обновлению пары строк и кажется простой — но обеспечение корректности при параллельном доступе может быть неожиданно сложным для только знакомящихся с уровнями изоляций БД.

Читать далее

Как сделать мобильное приложение, если у тебя лапки? Путь от PWA до TWA

Level of difficultyEasy
Reading time10 min
Reach and readers12K

Привет, Хабр! Меня зовут Влад, и я тот самый человек, который привык использовать костыли в решении задач. По крайней мере, я считаю, что это лучший подход при подготовке MVP. Яркий пример — прототипирование простых скриптов под микроконтроллеры на MicroPy или десктопных приложений на Electron. Но, как оказалось, это не все виды ухищрений в разработке.

Если вы веб-разработчик, но руки «чешутся» написать мобильное приложение, варианты есть. В этой статье я расскажу, как создать собственное прогрессивное веб-приложение (PWA) и доработать его до TWA, чтобы потом протестировать и опубликовать в разных сторах. Никакого rocket science, просто небольшое пособие, которое основывается на моем опыте. Подробности под катом.
Читать дальше →

Месть джунов

Level of difficultyEasy
Reading time11 min
Reach and readers31K

Краткое примечание о значении "вайб-кодинга" (vibe coding): В этом посте я исхожу из того, что вайб-кодинг повзрослеет, и люди будут использовать его для настоящей инженерии, а версия "отключи мозг" останется только для прототипирования и забавных проектов. Для меня вайб-кодинг просто означает позволить ИИ делать работу. Насколько внимательно вы решите следить за работой ИИ, зависит исключительно от решаемой задачи. Для продакшена вы внимательны; для прототипов вы расслабляетесь. В любом случае, это вайб-кодинг, если вы не написали это вручную.

Еще одно примечание: Месть происходит в самом конце, как в кино.

ОК! Разобравшись с этими административными вопросами, поехали!

Читать далее

Как работает SelectMany в LINQ

Level of difficultyEasy
Reading time5 min
Reach and readers1.6K

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

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

Читать далее

Как фронтендеру сделать интерфейс дружелюбнее к пользователю. Коллекция HTML/CSS лайфхаков

Level of difficultyMedium
Reading time6 min
Reach and readers11K
image

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


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


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


Давайте посмотрим, что я вам подготовил.

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

Ваш Xiaomi — это не Xiaomi. Кто делает китайские телефоны на самом деле?

Reading time10 min
Reach and readers102K

И почему они стоят так дёшево?

Многие в курсе, что Xiaomi, Honor, Tecno или Realme не делают телефоны сами. Но что если я скажу, что они их даже не разрабатывают? Многие бюджетные модели лишь продаются под этими шильдиками, а всю разработку и производство “от и до” делают совсем другие компании. Эти компании не на слуху, но без них не было бы никакого “топа за свои деньги”. Давайте разбираться, что всё это значит, и как так вышло.

Читать далее

Меня заставили повайбкодить

Level of difficultyHard
Reading time18 min
Reach and readers31K

Я давно пользуюсь кодогенерацией. Ещё во времена Yii фреймворка мне нравилось, что одним кликом мышки можно было сгенерировать CRUD с бэкендом, таблицами и формами. Backbone.js сразу из коробки обеспечивал REST API запросы и другие фичи. Между тем временем и нынешним днём — целый пласт инструментов для автоматизации, бутстрапинга и шаблонизации разработки. Приходилось и хрюкать, и глотать. То, что всё это, мягко говоря, так себе — уже отдельная история. Местами стало даже хуже. Хуже, чем когда вы неделю возились с конфигом Webpack.

В этой статье мы рассмотрим вайбкодинг. В чистом виде так сказать.

Читать далее

Валидация сложных форм с помощью Constraint Validation API

Level of difficultyMedium
Reading time7 min
Reach and readers1.2K

DOM предоставляет API для валидации пользовательского ввода. Вообще говоря, мы им пользуемся часто, например:

Читать далее

Меню для отзывчивого интерфейса без скриптов

Level of difficultyMedium
Reading time12 min
Reach and readers4.1K

В этой статье мы расскажем как создать отзывчивое меню по принципу mobile-first, используя только HTML и CSS — без JavaScript. Полный код, используемый в этой статье, доступен в репозитории на GitHub.

Читать далее

Взлом системного промпта ИИ (ChatGPT\Gemini etc)

Level of difficultyEasy
Reading time3 min
Reach and readers12K

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

Читать далее

15 команд Git, которые покрывают 90% повседневной работы разработчика

Level of difficultyMedium
Reading time9 min
Reach and readers60K

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

Читать далее

Как Discord индексирует триллионы сообщений

Level of difficultyMedium
Reading time12 min
Reach and readers940

В 2017 году мы рассказывали о том, как спроектировали нашу систему поиска сообщений так, чтобы она могла индексировать миллиарды сообщений. Благодаря этому наша поисковая инфраструктура стала высокопроизводительной, экономной, масштабируемой и простой в использовании. Мы решили выбрать Elasticsearch, в котором сообщения Discord шардились по индексам и использовалось логическое пространство имён для сообщений Elasticsearch в двух кластерах Elasticsearch. Сообщения шардились или по серверу Discord (который ниже будем называть гильдией) или по личным сообщениям (DM). Это позволило нам хранить все сообщения гильдии рядом для обеспечения высокой скорости запросов и работать с маленькими, более удобными кластерами. Так как поиском пользуются не все, сообщения индексировались лениво, и мы создали очередь сообщений, позволявшую воркерам получать блоки сообщений для индексирования, чтобы воспользоваться возможностями массового индексирования (bulk-indexing) Elasticsearch.

Но с ростом объёмов Discord наша поисковая инфраструктура начала трещать по швам…‍

Читать далее

Как я создал клон Pinterest с использованием Vue 3 и FastAPI

Level of difficultyEasy
Reading time7 min
Reach and readers3K

👋 Привет, Habr!

Вы когда-нибудь пытались найти качественный open-source клон Pinterest — с real-time функционалом, полноценной архитектурой, удобным UI и современной технологической основой? Я — да. И не нашёл. Поэтому решил создать свой.

Представляю вам Pinterest Clone — мой pet-проект, над которым я работал в одиночку 4 месяца, чтобы воссоздать не просто копию, а полнофункциональную платформу с реальным пользовательским опытом, максимально приближённым к оригиналу.

Читать далее

CRUD на PHP с использованием файберов и пула соединений с PostgreSQL

Level of difficultyMedium
Reading time12 min
Reach and readers2.1K

В этой статье я подготовил для вас прототип CRUD-приложения, которое использует файберы и неблокирующие(асинхронные) возможности драйвера PostreSQL. Вместе они дают любопытные результаты по производительности и потреблению памяти.

Читать далее

Пиши простой код

Level of difficultyEasy
Reading time4 min
Reach and readers34K

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

Читать далее

Параметры конфигурации мастера, отслеживаемые репликами PostgreSQL

Level of difficultyMedium
Reading time9 min
Reach and readers1.3K

Значения восьми параметров конфигурации мастера (primary, ведущего сервера PostgreSQL) сохраняются в управляющих файлах и изменения их значений передаются через журнал (WAL) на реплики. Если реплика открыта для запросов (hot_standby=on), то значения пяти числовых параметров на реплике должны быть не меньше, чем на мастере, иначе процесс startup прекратит накат (replay) журнальных записей. А после рестарта экземпляры реплик не запустятся. В статье рассматриваются эти параметры особенности изменения их значений.

Значения пяти числовых параметров конфигурации, сохраненных в управляющем файле кластера, можно посмотреть утилитой pg_controldata:

Читать далее

Аутентификация на основе cookies с помощью Laravel Sanctum

Level of difficultyMedium
Reading time18 min
Reach and readers3.6K

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

Представляю вашему вниманию подробное пошаговое руководство по настройке аутентификации на основе cookies с помощью Laravel Sanctum. В процессе мы объясним логику каждого шага и покажем, как настроить Postman. Кроме того, мы рассмотрим наиболее распространенные проблемы, связанные с CORS.

Читать далее

Information

Rating
Does not participate
Location
Харьков, Харьковская обл., Украина
Date of birth
Registered
Activity