То, что ChatGPT может автоматически генерировать что-то, что хотя бы на первый взгляд похоже на написанный человеком текст, удивительно и неожиданно. Но как он это делает? И почему это работает? Цель этой статьи - дать приблизительное описание того, что происходит внутри ChatGPT, а затем исследовать, почему он может так хорошо справляться с созданием более-менее осмысленного текста. С самого начала я должен сказать, что собираюсь сосредоточиться на общей картине происходящего, и хотя я упомяну некоторые инженерные детали, но не буду глубоко в них вникать. (Примеры в статье применимы как к другим современным "большим языковым моделям" (LLM), так и к ChatGPT).
User
Заметка о хуке useSyncExternalStore
Hello, world!
Представляю вашему вниманию перевод этой замечательной статьи.
useSyncExternalStore — это один из хуков, представленных в React 18. Наряду с хуком useInsertionEffect, он считается хуком для библиотек (library hook):
Следующие хуки предназначены для авторов библиотек для глубокой интеграции библиотек в модель React. Как правило, они не используются в коде приложения
В списке изменений React 18 речь также идет о библиотеках:
Добавлен useSyncExternalStore
для помощи в интеграции с React библиотек внешних хранилищ (external store libraries)
Что такое Shared UI, как он нам помог и причём тут микросервисы
Всем привет! Меня зовут Дима, я frontend-разработчик в Альфа-Банке. Сегодня я расскажу про Shared UI, что это такое и как мы пришли к созданию такого сервиса в интернет-банке, что это такое, как мы вообще придумали такой сервис.
Что будет, если от разработчиков не отстать: умирающая команда
Источник
15 человек, из них — один руководитель проекта, три фронта, два бэка, три аналитика, девопс. Симптомы обычные: процессы всем не нравятся, соседи — козлы, потому что не то и не так делают, а как нужно — не знают, ответственности ни на ком толком нет ни за что.
Вроде бы когда-то это был настроенный конвейер, но теперь его куски — как будто в разных зданиях. Особо не заботятся о том, что было «до» и что будет «после». А если всё падает, то люди поднимают руки: «Я не виноват. Я не знаю, как поднять».
Проект — внутренний банка, он нужен для улучшения работы внутри компании. Традиционных решений в кровавом энерпрайзе — два: нанять новую команду (но вгружать мидла на проект такой сложности — три-четыре месяца) или же оставить проект на поддержке, через два года найти ему замену, а команду тихо похоронить в подвале. Точнее, не так: те, кто плывет по течению и не заботится о карьере, остаются тихо сидеть «на пенсии», то есть в бесконечной поддержке проекта. А самые проактивные тут же перейдут в другие команды или другие компании.
Почему процессы разваливались? На первый взгляд, потому, что была куча ненужных совещаний и встреч с теми, кого разработчики вообще не должны были видеть. Плюс местами странноватые KPI. Как это ни странно, но если психологически давить на разработчика пару лет, то ничем хорошим это не закончится. Руководство подразделения дало мне карт-бланш на исправления, и я начал разбираться, что же случилось.
Концепции распределенной архитектуры, с которыми я познакомился при построении крупной системы платежей
До моей работы в Uber у меня не было опыта работы с распределёнными системами. Я получил традиционное образование в Computer Science, после чего с десяток лет занимался full-stack разработкой. Поэтому, пусть я и мог рисовать различные диаграммы и рассуждать о компромиссах (tradeoffs) в системах, к тому моменту я недостаточно хорошо понимал и воспринимал концепции распределённости — такие, например, как согласованность (consistency), доступность (availability) или идемпотентность (idempotency).
В данном посте я собираюсь рассказать про несколько концепций, которые мне потребовалось изучить и применить на практике при построении крупномасштабной высокодоступной распределённой системы платежей, которая сегодня работает в Uber. Это система с нагрузкой до нескольких тысяч запросов в секунду, в которой критическая функциональность платежей должна работать корректно даже в тех случаях, когда перестают работать отдельные части системы.
Полный ли это список? Скорее всего, нет. Однако, если бы лично я сам узнал про эти концепции раньше, это сделало бы мою жизнь гораздо проще.
Итак, давайте приступим к нашему погружению в SLA, согласованность, долговечность данных, сохранность сообщений, идемпотентность и некоторые другие вещи, которые мне потребовалось выучить на своей новой работе.
Тернистый путь внедрения аутентификации через соцсети
Кто помнит пароли от всех своих аккаунтов? Учеток слишком много, ведь почти каждый сервис в наше время требует для полноценного доступа создать учётную запись и придумать новый пароль.
Столкнувшись с очередным таким требованием, особенно на новой платформе, человек просто закрывает вкладку в браузере со словами «не больно-то и хотелось». Чтобы упростить жизнь пользователям – существует аутентификация через третьи сервисы (чаще социальные сети).
Привет, Хабр, меня зовут Сергей Солдатов, я тимлид в подразделении eSports MTS Digital, разработчик на Go и немного архитектор. Занимаюсь сервисами аутентификации и авторизации на WASD.TV. Это многофункциональная стриминговая платформа для геймеров, собственный сервис МТС. Как мы настраивали аутентификацию на WASD.TV и что из этого вышло – читайте под катом.
Что нужно знать, чтобы быть синьором?
В последнее время случилась (и продолжает случаться) тьма публикаций про кадровый голод в айти, про переоценённость синьоров, недооценённость всех остальных, про золотые горы, скандалы, интриги и конский перекос баланса фракции "программисты". Ну, короче, вы сами всё читали и вполне себе в теме. Так вот, в сим опусе хочется вспомнить, а ктож такой синьор и что ему крайне желательно знать, чтобы синдром самозванца не накрывал и чтобы окружающие уважали и на поклон за советом приходили.
Я фронтенд разработчик, а не обезьянка
2 дня унижения в чатах, пачка Ново-Пассита, но я выдержал это испытание и узнал, что до сих пор думают о фронтенд разработчиках «другие» разработчики. Будет интересно.
Node.js: документирование и визуализация API с помощью Swagger
Привет, друзья!
В этой небольшой заметке я расскажу вам о том, как генерировать и визуализировать документацию к API
с помощью Swagger
.
Мы разработаем простой Express-сервер
, способный обрабатывать стандартные CRUD-запросы
, с фиктивной базой данных, реализованной с помощью lowdb
.
Затем мы подробно опишем наше API
, сгенерируем JSON-файл
с описанием и визуализируем его.
Так, например, будет выглядеть описание POST-запроса
к нашему API
:
Если вам это интересно, прошу под кат.
Дженерики в TypeScript
Привет, я Сергей Вахрамов, занимаюсь фронтенд-разработкой на Angular в компании Тинькофф. Во фронтенд-разработку вошел напрямую с тайпскрипта, просто перечитав всю документацию. С того момента и спецификация ECMAScript расширилась, и TypeScript сильно подрос. Казалось бы, почему разработчики могут бояться дженериков, ведь бояться там нечего? Мой опыт общения с джуниор-разработчиками говорит, что во многом ребята не используют обобщенные типы просто потому, что кто-то пустил легенду об их сложности.
Эта статья для тех, кто не использует generic-типы в TypeScript: не знают о них, боятся использовать или используют вместо реальных типов — any
.
Как устроены мобильные номера. Давайте разберемся
Привет всем. Последнее время я писал код полей ввода input для номеров телефона и др. И мне пришлось углубиться в эту тему и разобраться как устроены мобильные номера телефонов. И в этой статье я хочу с вами поделиться своим опытом. Я постараюсь очень кратко, так что присоединяйтесь, потратьте 15 минут, если вы этого не знаете и вам любопытно.
Если вы занимаетесь программированием на vue.js, то вот вам ссылка на компонент, который включает различные input поля в том числе для номеров телефонов. Мне кажется данный компонент может сильно облегчить вам жизнь, ниже ссылка на github и гифка как работает одно из полей. На этом по вступлению все, дальше только по теме.
Карманная книга по TypeScript. Часть 7. Классы
Мы продолжаем серию публикаций адаптированного и дополненного перевода "Карманной книги по TypeScript
".
Другие части:
- Часть 1. Основы
- Часть 2. Типы на каждый день
- Часть 3. Сужение типов
- Часть 4. Подробнее о функциях
- Часть 5. Объектные типы
- Часть 6. Манипуляции с типами
- Часть 7. Классы
- Часть 8. Модули
Обратите внимание: для большого удобства в изучении книга была оформлена в виде прогрессивного веб-приложения.
Члены класса (class members)
Вот пример самого простого класса — пустого:
class Point {}
Такой класс бесполезен, поэтому давайте добавим ему несколько членов.
Гайд начинающего тимлида
В данной статье хотелось бы помочь разобраться в профессии начинающим тимлидам, или тем, кто об этом только думает.
Всё это я проговаривал на вебинаре в Хекслете тут https://www.youtube.com/watch?v=y_HkXvFovAc
Однако я уверен, что есть такие люди, которым не хочется 2 часа смотреть вебинар, а хочется за 15 минут прочитать структурированный текст. Поэтому я размещу его тут, в надежде на то, что он найдет своего заинтересованного читателя.
Общий стаж моей работы в ИТ - около 14 лет. Я начинал с системного администрирования, потом перешел в разработку, поработав как в аутсорсе, так и в продукте. Не один раз проходил путь от рядового разработчика до тимлида.
Как найти email пользователя GitHub и написать Telegram бота для решения этой задачи?
Этот пост будет полезен двум категориям людей: IT-рекрутерам и начинающим разработчикам, которые хотят научиться писать простенькие программы для решения практических задач.
Задача: известен профиль пользователя на GitHub, необходимо найти email этого пользователя
Решение: один запрос к API GitHub и телеграм-бот, которого мы напишем в этом посте
Идея написать бота пришла ко мне после того, как коллега поделилась со мной этим способом...
Выводы Grofers после двух лет Kubernetes в production
Почти два года назад мы решили отказаться от развертывания приложений на EC2 с конфигурациями, управляемыми через Ansible, и перейти к контейнеризации и оркестровке приложений с помощью Kubernetes. За это время большую часть инфраструктуры уже перенесли в Kubernetes. Миграция была сопряжена со своими вызовами: от технических, связанных с необходимостью обеспечивать работу гибридной инфраструктуры до завершения миграции, до обучения всей команды совершенно новой парадигме работы.
В данной публикации я хочу поразмышлять о полученном опыте и поделиться уроками, извлеченными из него. Надеюсь, это поможет вам принимать более взвешенные решения и повысит шансы на успех в аналогичных затеях.
Как программировать если совсем не хочется? План спасения на случай перегорания или дедлайна
Никакой воды в этой статье, только описание конкретного плана действий в случае если вы перегорели, у вас дедлайн, прокрастинация, депрессия, а также методики и советы, помогающие привести этот план в действие.
Простые TypeScript-хитрости, которые позволят масштабировать ваши приложения бесконечно
Мы используем TypeScript, потому что это делает разработку безопаснее и быстрее.
Но, на мой взгляд, TypeScript из коробки содержит слишком много послаблений. Они помогают сэкономить немного времени JavaScript-разработчикам при переходе на TS, но съедают очень много времени в долгосрочной перспективе.
Я собрал ряд настроек и принципов для более строгого использования TypeScript. К ним нужно привыкнуть один раз — и они сэкономят массу времени в будущем.
Организация разработки крупномасштабных React-приложений
В наши дни очень легко организовать разработку маленького React-приложения, или начать работу над ним с нуля. В особенности — при использовании create-react-app. Некоторым проектам, скорее всего, понадобится лишь несколько зависимостей (например — для управления состоянием приложения и для интернационализации проекта) и папка
src
, в которой, как минимум, имеется директория components
. Я полагаю, что именно с такой структуры начинается работа над большинством React-проектов. Обычно, правда, по мере того, как растёт количество зависимостей проекта, программисты сталкиваются с ростом количества компонентов, редьюсеров и других входящих в его состав механизмов, предназначенных для многократного использования. Иногда всем этим становится очень неудобно и сложно управлять. Что делать, например, если больше неясно то, почему нужны некоторые зависимости, и то, как они сочетаются друг с другом? Или, как быть, если в проекте накопилось так много компонентов, что становится сложно найти среди них именно тот, который нужен? Как поступить в том случае, если программисту нужно найти некий компонент, имя которого забыто?Масштабирование CI/CD монорепозитория
Дано
- Монорепозиторий на базе Lerna и Yarn workspaces.
- Десяток приложений, и десятки общих пакетов на TypeScript, Angular, NodeJS.
- Высокое покрытие тестами самых разных мастей (модульные, интеграционные, e2e).
- и Atlassian Bamboo CI/CD.
Задача
Ускорить имеющиеся пайплайны в 2 раза (до, хотя бы, получаса). Попутно повысив стабильность до 90%.
Забегая вперед, скажу что требуемые показатели были достигнуты.
Эмоции, cамостоятельная работа
Продолжу тему мотивации, начатую в “Прогулке по заводу желаний”.
Желания опираются на потребности. Потребности с искажениями, но ощущаются. Ощущения можно разделить на внешние и внутренние — на получаемые от органов чувств и на приходящие из глубин бессознательного.
Внутренние ощущения, порождающие желания, принято называть эмоциями. Эмоции влияют на работоспособность, помогая или мешая. Изучение эмоций выглядит небесполезным делом, мягко говоря.
Перечисление разных эмоций можно встретить в разных хабро-хабах, например: Управление персоналом, Научно-популярное, Машинное обучение, Обработка изображений, Тестирование IT-систем, Разработка веб-сайтов.
Упоминание отдельных эмоций можно встретить практически в любом живом хабе. Эмоции важны, не так ли? Кажется, что важная тема хорошо изучена.
Разрешите усомниться.
Information
- Rating
- Does not participate
- Location
- Польша
- Date of birth
- Registered
- Activity