Pull to refresh
1
0
Сергей @toor

User

Send message

Нагрузочное тестирование API без использования UI

Level of difficultyMedium
Reading time7 min
Views6.7K

Нагрузочное тестирование API без использования UI

В этой статье поговорим о Нагрузочном тестировании при помощи JMeter-Java-Dsl и реализуем наш первый нагрузочный тест для API с генерацией динамических значений.

Читать далее
Total votes 20: ↑19 and ↓1+18
Comments3

Интервью с командой разработчиков социальной сети Now

Reading time8 min
Views16K

В конце марта 2022 года в СМИ и профильных изданиях начали появляться заметки о том, что группа независимых разработчиков работает над альтернативой социальной сети Instagram**. Приложение получило название Now (читается как «Нау») и тогда было доступно только в виде тестовых сборок для Android и iOS. Сейчас Now уже официально вышло в App Store, Google Play, RuMarket, и в ближайшее время ожидается релиз в AppGallery. Менее чем за месяц аудитория Now преодолела отметку в 200 тыс. пользователей, ежедневно регистрируется более 4 тыс.

Редакции Хабра удалось пообщаться с командой Now, узнать об истории создания приложения, внутренней кухне и планах. Список вопросов к разработчикам мы формировали на основе комментариев пользователей Хабра и собственных интересов.

Читать далее
Total votes 35: ↑30 and ↓5+25
Comments29

ULE — самописное MC Java ядро. Часть #1.1 — HelloWorld и изменения…

Reading time16 min
Views5.9K

Дальше создаю серверное ядро на языке Rust, в данной часте был сделан переход с Go и добавлено несколько интересный изменений.

Переход с Go на Rust дал огромный прирост производительности и теперь ядро сверх быстрое. Ядро использует всего 128KB ОЗУ и запускается за менее 1мс)

Читать далее
Total votes 7: ↑6 and ↓1+5
Comments4

Создание своего серверного ядра на Go для Minecraft Java. Часть #1 — Основное о идее и малое начало

Reading time7 min
Views10K

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

Конкретно в этой части статьи будет рассматриваться основные понятия об Minecraft, мультиплеере и почему решил сделать такое. Так же сделаем основу сервера, который пока будет поддерживать Ping-Pong List

Читать далее
Total votes 12: ↑9 and ↓3+6
Comments8

Локальная разработка в Kubernetes с помощью werf 1.2 и minikube

Reading time12 min
Views13K

В этой статье на примере простого приложения будут описаны подготовка и развертывание инфраструктуры для локальной разработки с Kubernetes и последующий запуск проекта в этом окружении.

Зачем это может понадобиться? Предоставляя услуги поддержки инфраструктуры нашим клиентам, нам часто приходится искать баланс между эффективностью и затраченными ресурсами. Когда есть потребность в нескольких рабочих окружениях для разработчиков (stage, dev, test, review и т.п.), как правило, ограничивающим фактором в их реализации являются деньги. Поэтому для решения такой задачи — в дополнение к динамическим окружениям (или вместо них) — задействуются локальные окружения прямо на рабочих местах разработчиков, о которых и пойдет речь далее.

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

Review- или динамические окружения. Теория и практика в Kubernetes

Reading time10 min
Views14K

Статья посвящена так называемым review-окружениям, реализуемым в рамках кластеров Kubernetes. Ранее эта тема затрагивалась, например, в нашем докладе «Лучшие практики CI/CD с Kubernetes и GitLab», но не была там основной темой, поэтому раскрывалась не во всех деталях. Попробую восполнить этот пробел, рассказав, для чего нужны и/или обычно используют review-окружения, как сделать pipeline c review-окружением в GitLab CI/CD, какие могут быть потенциальные проблемы и способы их решения.

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

Навык Алисы на serverless в Yandex.Cloud

Reading time15 min
Views8.9K

Сложно в одном тексте описать всё необходимое для разработки даже самого простого навыка для Алисы с одной стороны. А с другой стороны, показать разработку на serverless-стеке так, чтобы и новичку было не так сложно и заядлому девелоперу было не скучно. Но попробую осилить эту задачу, написав навык на Go. и будет у меня семейный список дел.  

Читать далее
Total votes 9: ↑8 and ↓1+7
Comments0

Настройка распределенной трассировки в Kubernetes с OpenTracing, Jaeger и Ingress-NGINX

Reading time7 min
Views9K

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

Распределённая трассировка (Distributed Tracing) - это метод, используемый для мониторинга приложений. Для микросервисов он просто незаменим.

В качестве примера мы будем использовать приложение Meow-Micro , специально созданное для этой статьи. Но вы можете развернуть собственные приложения, если захотите.

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

Рациональное использование ресурсов в Kubernetes

Reading time5 min
Views6.9K

Одна из важных задач при работе с Kubernetes - рациональное распределение ресурсов. Для этого необходимо правильно назначать контейнерам лимиты(limits) и запросы (requests). Но это не всегда простая задача.

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

Эта статья поможет разобраться, как быстро находить неиспользуемые ресурсы с помощью PromQL.

Читать далее
Total votes 8: ↑6 and ↓2+4
Comments1

Разбираемся с новым sync.Map в Go 1.9

Reading time7 min
Views74K

Одним из нововведений в Go 1.9 было добавление в стандартную библиотеку нового типа sync.Map, и если вы ещё не разобрались что это и для чего он нужен, то эта статья для вас.


Для тех, кому интересен только вывод, TL;DR:


если у вас высоконагруженная (и 100нс решают) система с большим количеством ядер процессора (32+), вы можете захотеть использовать sync.Map вместо стандартного map+sync.RWMutex. В остальных случаях, sync.Map особо не нужен.


Если же интересны подробности, то давайте начнем с основ.

Читать дальше →
Total votes 26: ↑24 and ↓2+22
Comments26

Идеальное Vue приложение на Typescript

Reading time6 min
Views26K

Пока Vue3 официально еще не вышел, а продакшене в основном 2 версия - я хочу поговорить о типизации и том, что она все еще не идеальна во Vue. И сегодня мы попробуем создать идеальное приложение с типизацией на typescript сделав упор на code style, пропагандируя vue style guide и прочие обычно не значащие вещи, которые были придуманы умными людьми!

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

Дизайн пагинации страниц в API

Reading time3 min
Views19K
Для API может быть сложно вернуть все результаты запроса, особенно если их тысячи. Это создаёт нагрузку на сервер, на клиент, на сеть и часто является ненужным. Поэтому и придумали пагинацию.

Обычный способ разбиения на страницы — это смещение или номер страницы. Вы делаете такой запрос:

GET /api/products?page=10
{"items": [...100 products]}

а дальше такой:

GET /api/products?page=11
{"items": [...another 100 products]}
Читать дальше →
Total votes 10: ↑7 and ↓3+4
Comments19

Впечатление от Стэнфордских курсов CS193P Весна 2020 г.: Разработка iOS приложений с помощью SwiftUI

Reading time10 min
Views10K


Стэнфордский университет, США — один из лучших в мире в области информатики (Computer Science). Он щедро делится своими курсами, и одним из самых популярных и успешных курсов является курс CS193P по разработке приложений на iOS, который читает профессор Пол Хэгерти.
Предложенные в весеннем семестре 2020 года лекции Стэнфордского курса CS193P «Developing  Application for iOS with SwiftUI» («Разработка приложений для iOS с использованием SwiftUI») были прочитаны студентам Стэнфорда с ориентацией на новый продукт, предоставленный Apple разработчикам в 2019 г, — фреймворк SwiftUI для разработки реактивного пользовательского интерфейса (UI). На сайте курса вы найдете материалы, которые были предоставлены студентам Стэнфорда в течение весеннего семестра 2020 г.: ссылки на видео, слайды, домашние задания и код демонстрационных примеров. Русскоязычный конспект курса представлен здесь.

SwiftUI — это совершенно новая вещь, которой было всего несколько месяцев от роду на момент прочтения лекций. Но это самый передовой край технологий, которые, наконец, добрались до разработки приложений на iOS. В июне 2020 г. состоялась международная конференция разработчиков Apple WWDC и там была представлена следующая версия SwiftUI 2.0. Изменения в версии SwiftUI 2.0 отражены на сайте курса на закладке WWDC.
Читать дальше →
Total votes 6: ↑6 and ↓0+6
Comments2

Определяем пульс по вебкамере в 50 строчек кода

Reading time4 min
Views33K

Привет Хабр.

Однажды мне попалось описание приложения для Android, которое определяло пульс по камере телефона, просто по общей картинке. Камера не прикладывалась к пальцу, кожа не просвечивалась светодиодом. Интересный момент был в том, что ревьюеры не поверили в возможность такого определения пульса, и приложение было отклонено. Чем дело кончилось у автора программы, не знаю, но стало интересно проверить, возможно ли это.

Для тех кому интересно что получилось, продолжение под катом.

Читать далее
Total votes 88: ↑87 and ↓1+86
Comments72

Основы Natural Language Processing для текста

Reading time12 min
Views191K
Обработка естественного языка сейчас не используются разве что в совсем консервативных отраслях. В большинстве технологических решений распознавание и обработка «человеческих» языков давно внедрена: именно поэтому обычный IVR с жестко заданными опциями ответов постепенно уходит в прошлое, чатботы начинают все адекватнее общаться без участия живого оператора, фильтры в почте работают на ура и т.д. Как же происходит распознавание записанной речи, то есть текста? А вернее будет спросить, что лежит в основе соврменных техник распознавания и обработки? На это хорошо отвечает наш сегодняшний адаптированный перевод – под катом вас ждет лонгрид, который закроет пробелы по основам NLP. Приятного чтения!


Total votes 33: ↑31 and ↓2+29
Comments9

Проект Natasha. Набор качественных открытых инструментов для обработки естественного русского языка (NLP)

Reading time34 min
Views88K
Два года назад я писал на Хабр статью про Yargy-парсер и библиотеку Natasha, рассказывал про решение задачи NER для русского языка, построенное на правилах. Проект хорошо приняли. Yargy-парсер заменил яндексовый Томита-парсер в крупных проектах внутри Сбера, Интерфакса и РИА Новостей. Библиотека Natasha сейчас встроена в образовательные программы ВШЭ, МФТИ и МГУ.

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

Для новостных статей качество на всех задачах сравнимо или превосходит существующие решения. Например с задачей NER Natasha справляется на 1 процентный пункт хуже, чем Deeppavlov BERT NER (F1 PER 0.97, LOC 0.91, ORG 0.85), модель весит в 75 раз меньше (27МБ), работает на CPU в 2 раза быстрее (25 статей/сек), чем BERT NER на GPU.

В проекте 9 репозиториев, библиотека Natasha объединяет их под одним интерфейсом. В статье поговорим про новые инструменты, сравним их с существующими решениями: Deeppavlov, SpaCy, UDPipe.

Total votes 57: ↑55 and ↓2+53
Comments25

«В карантин нагрузка выросла в 5 раз, но мы были готовы». Как Lingualeo переехал на PostgreSQL с 23 млн юзеров

Reading time7 min
Views70K
image

Проекту Lingualeo уже 10 лет. Более 23 миллионов человек из России, Турции, Испании и стран Латинской Америки учат с помощью нашего сервиса английский.

LinguaLeo создавали в конце нулевых – начале десятых годов и использовали передовые на тот момент технологии и методы. Но прошло время, и они сильно устарели. Так что мы решили, что систему пора обновить.

Мы попросили нашего лидера бэкэнд разработки, Олега Правдина, рассказать о том, как они с командой параллельно с поддержкой основного продукта собрали новую модульную структуру сервиса на базе PostgreSQL, перенесли бизнес-логику в базы данных и провели миграцию с миллионами пользователей.

Проблемы зрелого продукта


«Я пришёл в Lingualeo в августе 2018 руководить бэкэнд разработкой. Тогда бэком занималась команда из 8 разработчиков и 2 админов, которые обслуживали монолит на 1 миллион строк кода преимущественно на PHP. Чтобы внедрить даже небольшую новую фичу, уходило 2 месяца. А затраты на инфраструктуру на 10 000 активных пользователей превышали 1 000 $ в год.

Как это произошло? Дело в том, что за 10 лет в проекте сменилось несколько команд разработки. Приходили новые люди, как и я, они по-своему добавляли новые модули и фичи. Команды менялись, новички не всегда понимали, как работают старые части системы, в итоге код Lingualeo постепенно превратился в чёрный ящик: непрозрачная логика в бэкенде, перегруженный фронт, обилие костылей, большие пробелы в документации.

Всего у нас в штате было 20 разработчиков, но развивать продукт было невозможно: если что-то добавить, вылезали неожиданные проблемы. У команды уходило 2–3 недели, чтобы всё починить. Разработчики занимались поддержкой кода из 2013 года, и ресурсов на обновление функциональности не было.
Читать дальше →
Total votes 175: ↑102 and ↓73+29
Comments794

10 вещей, которые вы могли не знать о scikit-learn

Reading time7 min
Views14K
В этой переведенной статье ее автор, Rebecca Vickery, делится интересными функциями scikit-learn. Оригинал опубликован в блоге towardsdatascience.com.


Фото с сайта Unsplash. Автор: Sasha • Stories

Scikit-learn является одной из наиболее широко используемых библиотек Python для машинного обучения. Ее простой стандартный интерфейс позволяет производить препроцессинг данных, а также заниматься обучением, оптимизацией и оценкой модели.

Этот проект, разработанный Дэвидом Курнапо (David Cournapeau), появился на свет в рамках программы Google Summer of Code и был выпущен в 2010 году. С момента своего создания библиотека превратилась в инфраструктуру с широкими возможностями для создания моделей машинного обучения. Новые функции позволяют решать еще больше задач и повышают удобство использования. В этой статье я расскажу о десяти самых интересных функциях, о которых вы могли не знать.
Читать дальше →
Total votes 8: ↑8 and ↓0+8
Comments0

Apple Silicon: конец эры Wintel

Reading time6 min
Views28K


Прим. перев.: автор статьи — Жан-Луи Гассе, предприниматель, менеджер. В конце 1960-х – начале 1970-х руководил в Hewlett-Packard запуском проекта первого настольного научного компьютера. В 1981 году стал директором по европейским операциям в компании Apple Computer. В 1985 году, узнав о плане Стива Джобса выгнать из компании директора Джона Скалли, проинформировал об этом совет директоров, что в итоге привело к уходу самого Джобса.

После этого получил от Скалли бывшую должность Джобса, управление разработкой Macintosh. В конце 1980-х лично представлял несколько новых продуктов со сцены, включая Macintosh Portable и Macintosh IIfx.

Задавил идею лицензировать Mac OS для использования другими компаниями. В середине 80-х занялся побочным проектом, который в итоге вылился в создание Newton MessagePad.

В 1988 году стал главой отдела разработки передовых продуктов и всемирного маркетинга, и ходили слухи, что он может занять место главы компании. В 1989 году задавил проект Drama, в рамках которого планировалось продавать недорогие версии компьютеров Macintosh, под предлогом того, что покупатели всегда будут готовы платить деньги за отличное качество компьютеров.
Читать дальше →
Total votes 46: ↑41 and ↓5+36
Comments424

Профилирование. Отслеживаем состояние боевого окружения с помощью Redis, ClickHouse и Grafana

Reading time7 min
Views7.2K

прим. latency/time.

Наверное перед каждым возникает задача профилирования кода в продакшене. С этой задачей хорошо справляется xhprof от Facebook. Вы профилируете, к примеру, 1/1000 запросов и видите картину на текущий момент. После каждого релиза прибегает продакт и говорит «до релиза было лучше и быстрее». Исторических данных у вас нет и доказать вы ничего не можете. А что если бы могли?
Читать дальше →
Total votes 8: ↑8 and ↓0+8
Comments14

Information

Rating
Does not participate
Location
Раменское, Москва и Московская обл., Россия
Date of birth
Registered
Activity