Search
Write a publication
Pull to refresh
1
0
Inessa Matuznaya @Incher

Backend Developer

Send message

История развития языковых моделей: ч. 2, от ChatGPT до рассуждающего режима

Level of difficultyEasy
Reading time18 min
Views2.4K

Доброго времени суток, «Хабр»!

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

Пристегните токены — вход в зону трансформаций!

Читать далее

История развития языковых моделей: ч. 1, от цепей Маркова до ELIZA

Level of difficultyEasy
Reading time12 min
Views2.4K

Доброго времени суток, «Хабр»!

2025 год на дворе, а мы уже успели познакомиться с сотнями языковых моделей, чьи возможности по-настоящему впечатляют. Написать осмысленный текст, проанализировать текст, найти в нём ключевые мысли? Без каких-либо проблем.

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

Пристегните ремни — будет познавательно!

Читать далее

Детальный разбор архитектуры современных языковых моделей

Level of difficultyEasy
Reading time9 min
Views13K

Доброго времени суток, «Хабр»!

Сегодня мы погрузимся в мир современных языковых моделей, детально изучим их архитектуру и разберемся в принципах работы. Готовы к захватывающему путешествию в мир искусственного интеллекта? Тогда пристегните ремни — мы отправляемся!

Читать далее

Докеризируем Symfony

Reading time9 min
Views17K

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

Начнем же с простого вопроса: сколько времени занимает создание сайта?

Читать далее

О динамическом программировании на пальцах

Level of difficultyEasy
Reading time9 min
Views57K

Как динамическое программирование может упростить нашу жизнь? Как можно оптимизировать решение задач?

Сегодня мы разберем динамическое программирование на пальцах с примерами на Python!

Усаживайтесь поудобнее, леди и джентльмены!

Вперед!

Управление памятью в PHP. Сборка мусора, слабые ссылки и прочая челядь

Level of difficultyMedium
Reading time11 min
Views16K

1. Введенние.
2. Zval.
3. Циклические ссылки.
4. Сборщик мусора.
5. Алгоритм работы сборщика мусора.
6. Смотрим глазами.
7. Слабые ссылки.
8. Бонус-трэк: WeakMap.
9. Заключение.

Читать далее

Что такое дизайн-токены простыми словами

Level of difficultyEasy
Reading time8 min
Views34K

Я постарался придумать самое простое объяснение дизайн-токенов на примере житейских ситуаций. Что это такое, как работают и зачем они нужны — в этой статье.

Про принципы наименований, экспорт токенов из фигмы и передачу токенов разработчикам.

Ознакомиться со статьей 👏🏼

Создаем свой VPN с защищенным от блокировок протоколом AmneziaWG, или WireGuard на максималках

Reading time5 min
Views183K


Всем привет! Возможно уже совсем скоро разные новостные и  IT-ресурсы будут подчищать информацию о способах обхода блокировок. А пока этого не случилось, запасаемся полезными гайдами и разворачиваем свои собственные VPN с защищенными от блокировок протоколами. Расскажу как это сделать, как изменилась Amnezia и как мы защитили WireGuard от блокировок.

Читать далее

Как мы поднимаем dev-стэнд(ы) и гоняем полноценные тесты api на каждый коммит

Level of difficultyEasy
Reading time8 min
Views6.3K

Мы в API отказались от большого количества unit-тестов в пользу большого количества интеграционных/системных, чтобы тестировать меньшим количеством кода большее количество функций, а также наблюдать за взаимодействием разных частей системы.

На самом деле мы просто решили писать тесты не на отдельные классы/методы, а на интерфейс api, которым пользуются клиенты - на сервисы этого API. Тестируя их, мы убиваем двух зайцев: проверяем логику работы сервисов api + форматирование результата.

А такое тестирование сопряжено с несколькими проблемами.

Читать далее

PHP. Как увеличить потребление памяти в 3 и более раз при работе с массивами

Level of difficultyMedium
Reading time12 min
Views20K

1. Общие сведения.
2. Увеличиваем потребление памяти вдвое.
3. Увеличиваем потребление памяти втрое.
4. Ещё раз увеличиваем потребление памяти на ровном месте.
5. Заключение.

Читать далее

KeyDB и Redis: в поисках серебряной пули — in-memory replicated DB (Replicated IMDB)

Level of difficultyMedium
Reading time19 min
Views16K

На кластерах клиентов, которые мы обслуживаем, есть как «одноголовые» инсталляции Redis (обычно для кэшей, которые не страшно потерять), так и более отказоустойчивые решения — Redis Sentinel или Redis Cluster. По нашему опыту, во всех трех вариантах можно безболезненно переключиться с Redis на KeyDB и получить прирост производительности. Точнее, избавиться от бутылочного горлышка Redis в одно ядро. Хотя в новых версиях Redis(r) появилась обработка I/O в отдельных тредах, иногда этого бывает недостаточно.

В то же время, если мы хотим использовать отказоустойчивые решениями вроде Sentinel и Cluster, нам понадобится поддержка этих технологий на уровне библиотеки, которую приложение использует для подключения в Redis. Причем лишь немногие библиотеки умеют читать из реплик Redis — в обоих вариантах (Sentinel и Cluster) чтение, как правило, происходит с мастеров. И запись, естественно, тоже происходит в мастеры. 

В итоге у нас есть несколько реплик довольно дорогого in-memory-хранилища, а в рабочем процессе используется только часть из них. Остальные — на подхвате. Хотя в большинстве кейсов операции с in-memory NoSQL DB — это именно операции чтения.

Однако если посмотреть в сторону KeyDB, то можно увидеть, что там есть киллер-фича — и даже две: я говорю о режимах Active Replica и Multi-Master. Использование этих режимов позволяет получить распределенный отказоустойчивый KeyDB, совместимый с Redis, писать в любую ноду, читать из любой ноды. И все это с точки зрения приложения выглядит как один экземпляр Redis без всяких Sentinel — то есть в коде приложения ничего менять не придется. 

Звучит как фантастика?

Читать далее

Учимся разрабатывать REST API на Go на примере сокращателя ссылок

Level of difficultyMedium
Reading time30 min
Views90K

В этой статье мы напишем полноценный REST API сервис — URL Shortener — и задеплоим его на виртуальный сервер с помощью GitHub Actions.

Говоря «полноценный», я имею в виду, что это будет не игрушечный проект, а готовый к использованию:

  • мы выберем для него актуальный http-роутер,
  • позаботимся о логах,
  • напишем тесты: unit-тесты, тесты хэндлеров и функциональные,
  • настроим автоматический деплой через GitHub Actions и др.

Но важно понимать, что «готовый к продакшену» != «энтерпрайз».

Кратко обо мне: меня зовут Николай Тузов, я много лет занимаюсь разработкой на Go, очень люблю этот язык. Также веду свой YouTube-канал, на котором есть видеоверсия текущего гайда, с более подробными объяснениями.
Читать дальше →

Подойдет ли PostgreSQL вообще всем проектам или нужны альтернативы

Reading time15 min
Views18K

В интернете только и разговоров, что про PostgreSQL и MySQL, но выбор СУБД много шире. В этом материале мы рассмотрим несколько популярных баз данных, разберемся с их спецификацией и сценариями использования, чтобы выйти за рамки привычных решений.
Читать дальше →

Разработка REST-серверов на Go. Часть 1: стандартная библиотека

Reading time9 min
Views96K
Это — первый материал из серии статей, посвящённой разработке REST-серверов на Go. В этих статьях я планирую описать реализацию простого REST-сервера с использованием нескольких различных подходов. В результате эти подходы можно будет сравнить друг с другом, можно будет понять их относительные преимущества друг перед другом.

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


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

Хождение по граблям PDO: что скрывают за собой современные PHP ORM

Level of difficultyEasy
Reading time21 min
Views11K

Привет, Хабр! В статье расскажу о том, с какими трудностями можно столкнуться при разработке ORM на PHP и поделюсь опытом по их преодолению.

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

Читать далее

Полезные материалы по Data Science и машинному обучению, которые помогут пройти сквозь джунгли из терминов

Level of difficultyEasy
Reading time8 min
Views26K

Привет, Хабр! Меня зовут Ефим, я MLOps-инженер в Selectel. В прошлом был автоматизатором, ML-инженером, дата-аналитиком и дата-инженером — и уже несколько лет падаю в пропасть машинного обучения и Data Science. Это буквально необъятная сфера, в которой почти нет ориентиров. Основная проблема в том, что разделов математики довольно много и все они, на первый взгляд, нужны в том же машинном обучении.

В этой статье делюсь полезными материалами, которые помогут найти и заполнить теоретические и практические проблемы и основательно подойти к своему профессиональному развитию. Добро пожаловать под кат!
Читать дальше →

Понимаем JIT в PHP 8

Reading time7 min
Views40K
Перевод статьи подготовлен в преддверии старта курса «Backend-разработчик на PHP»




TL;DR


Компилятор Just In Time в PHP 8 реализован как часть расширения Opcache и призван компилировать операционный код в инструкции процессора в рантайме.

Это означает, что с JIT некоторые операционные коды не должны интерпретироваться Zend VM, такие инструкции будут выполняться непосредственно как инструкции уровня процессора.
Читать дальше →

ETL-пайплайны на Airflow: Хороший, Плохой, Злой

Reading time8 min
Views19K

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

В этой статье мы рассмотрим как с помощью Airflow ETL операторов выгрузить данные из Postgres в BigQuery в парадигмах ETL и ELT. Далее разберем сложности, с которыми вы можете столкнуться при реализации инкрементальной загрузки данных в DAG (DAG - directed acyclic graph, ориентированный ацикличный граф - цепочка связанных задач). Наконец, мы обсудим почему Airflow ETL операторы не смогут покрыть все ваши потребности в интеграциях в дальней перспективе.

Читать далее

ETL и ELT: ключевые различия, о которых должен знать каждый

Reading time10 min
Views59K
image

ETL и ELT — самые широко используемые способы доставки данных из одного или нескольких источников в централизованную систему для удобства доступа и анализа. Обе этих методики состоят из этапов extract (извлечения), transform (преобразования) и load (загрузки). Разница заключается в последовательности действий. Хотя можно подумать, что небольшое изменение в порядке этапов никак не влияет, на самом деле для потока интеграции это меняет всё.

В этом посте мы подробно рассмотрим процессы ETL и ELT, а также сравним их по важным критериям, чтобы вы могли понять, какой лучше подходит для вашего конвейера данных.
Читать дальше →

Как всё успевать: 10 проверенных принципов борьбы с хаосом задач

Reading time9 min
Views37K

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

За долгие годы работы в IT такие методики и принципы выработались и у меня. Например, «Принцип пустого почтового ящика». Или «Принцип постепенного проявления». Они проверены временем и помогают мне успешно ориентироваться в окружающем потоке задач. В этой статье я хочу поделиться с вами этими принципами. Возможно, какие-то из них покажутся вам полезными и пригодятся.

Читать далее
1
23 ...

Information

Rating
Does not participate
Registered
Activity