Pull to refresh
-4
0
Игорь Белинский @IgorDev

Forever Junior

Send message

Как вырастить динозавра: масштабирование платформы YTsaurus от 200 до 20 000 хостов. Доклад Яндекса

Reading time16 min
Views2.5K

Привет! Меня зовут Паша Сушин. Уже больше десяти лет я занимаюсь в Яндексе развитием платформы YTsaurus — нашего внутреннего инструмента, который в марте 2023 года вышел в опенсорс и теперь доступен всем на GitHub по лицензии Apache 2.0. 

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

Читать далее
Total votes 16: ↑16 and ↓0+20
Comments2

Введение в реактивное программирование

Reading time11 min
Views50K
Здравствуйте. В этой статье я пробегусь галопом по Европам, а именно — расскажу, что понимают под реактивным программированием, познакомлю с акторами, реактивными потоками, и наконец, при помощи реактивных потоков мы сделаем распознавание мышиных жестов, как в старой Opera и её духовном наследнике — Vivaldi.

Цель — познакомить с основными концепциями реактивного программирования и показать, что не всё так сложно и страшно, как может показаться на первый взгляд.

image
Источник
Читать дальше →
Total votes 21: ↑18 and ↓3+15
Comments20

На практике пробуем KAN – принципиально новую архитектуру нейросетей

Level of difficultyMedium
Reading time5 min
Views36K

На днях ученые из MIT показали альтернативу многослойному перцептрону (MLP). MLP с самого момента изобретения глубокого обучения лежит в основе всех нейросетей, какими мы их знаем сегодня. На его идее в том числе построены большие языковые модели и системы компьютерного зрения.

Однако теперь все может измениться. В KAN (Kolmogorov-Arnold Networks) исследователи реализовали перемещение функций активации с нейронов на ребра нейросети, и такой подход показал блестящие результаты.

Читать далее
Total votes 56: ↑56 and ↓0+76
Comments15

«Конфискация денег без презумпции невиновности»: ужасы AML/KYC процедур в зарубежных банках

Reading time14 min
Views31K

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

Читать далее
Total votes 77: ↑69 and ↓8+77
Comments170

Кто реально угрожает C++ (нет, Rust, не ты)

Reading time14 min
Views78K

Привет! Меня зовут Александр Каленюк, и я крепко подсел на C++. Пишу на C++ 18 лет кряду, и все эти годы отчаянно пытаюсь избавиться от этой разрушительной зависимости.

Всё началось в конце 2005 года, когда мне довелось писать движок для симуляции 3D-пространства. В этом движке было буквально всё, чем язык C++ мог похвастаться в 2005 году. Трёхзвёздочные указатели, восьмиуровневые зависимости, C-подобные макросы повсюду. Кое-где – вкрапления ассемблера. Итераторы в стиле Степанова и мета-код в стиле Александреску. В общем, всё. Кроме ответа на самый важный вопрос: зачем?

Читать далее
Total votes 220: ↑208 and ↓12+244
Comments362

OverScript — язык программирования, написанный на C#

Reading time14 min
Views19K

Привет! Меня зовут Дмитрий, я написал на C# свой интерпретируемый язык программирования, который назвал — OverScript. Это си-подобный язык со статической типизацией. Сразу скажу, что это не прототип, а готовый проект. Весь код на 100% мой. Я подробно не интересовался, как написаны другие языки, поэтому вся реализация интерпретатора это моя чистая импровизация. Мой подход неконвенциональный, поэтому к техническим аспектам стоит относиться без ассоциаций с тем, что вы могли ранее видеть в других языках, несмотря на то, что некоторые вещи могут казаться знакомыми.


image

Читать дальше →
Total votes 24: ↑18 and ↓6+15
Comments93

Отсутствие в .NET важных тригонометрических функций: заполняем пробелы

Level of difficultyEasy
Reading time4 min
Views4.9K

.NET включает базовые тригонометрические функции (sin, cos, tan, asin, acos, atan) и их гиперболические аналоги (sinh, cosh, tanh, asinh, acosh, atanh) в классе Math. Однако в .NET отсутствуют важные тригонометрические функции, я решил заполнить этот пробел, при реализации этих функций необходимо учитывать особенности вычислений с плавающей запятой, диапазон входных и выходных значений и их свойства симметрии.

Читать далее
Total votes 17: ↑13 and ↓4+12
Comments21

Шаблоны проектирования облачных сервисов

Reading time8 min
Views4.9K

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

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

Читать далее
Total votes 7: ↑5 and ↓2+5
Comments2

Чем занимается IT-архитектор: фантазии коллег и суровая реальность

Reading time10 min
Views15K

Привет, Хабр! Я — Светлана Уварова, ведущий системный архитектор в МТС.

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

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

Читать далее
Total votes 22: ↑16 and ↓6+11
Comments38

System Analyst Roadmap или что нужно знать системному аналитику

Level of difficultyMedium
Reading time7 min
Views15K

Забудь про хаос в карьере!

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

Не упусти шанс стать экспертом! Узнавай новое уже сегодня и открой для себя мир успешной карьеры в IT!

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

Классификация комбинаторных объектов на примере латинских квадратов

Level of difficultyMedium
Reading time15 min
Views1.1K

Хочу поделиться некоторым опытом по написанию программ для перечисления комбинаторных объектов из заданного класса (в примере будут рассматриваться латинские квадраты, хотя на картинке, для зрелищности, показан латинский куб). Обычно нужно перечислить все объекты с заданными параметрами, например, таблицы заданного размера, заполненные числами согласно некоторому правилу. Под словом «все» можно подразумевать как «все различные», так и «принципиально различные» в смысле, специфическом для конкретной задачи, например, таблицы могут считаться принципиально одинаковыми (эквивалентными), если одна получается из другой перестановкой строк.

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

Как графы знаний и LLM могут друг другу помочь

Level of difficultyMedium
Reading time4 min
Views5K

Предобученные языковые модели генерируют качественный текст, сравнимый по качеству с человеческим (иногда даже превосходящий его). Но некоторые проблемы остаются даже у лучших LLM — сеть не понимает, что говорит. Может получаться хоть и виртуозный с точки зрения грамматики и лексики, но всё-таки неверный по смыслу результат. 

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

Деплой .NET приложений для самых маленьких. Часть 1. Jenkins

Level of difficultyMedium
Reading time7 min
Views6.6K

В прошлой статье мы рассмотрели способы запуска наших проектов на удаленном VPS. Для этого мы арендовали хостинг, создали шаблонное приложение, перенесли его на хостинг через простое копирование через ssh и через git clone, запустили через dotnet run / dotnet publish, а также развернули приложение в докере.

Действительно, такой подход сложно назвать правильным даже для учебных целей, уж тем более его вряд ли можно назвать хорошим для реальных рабочих проектов. Поэтому предлагаю рассмотреть сценарий развертывания контейнеризированного .NET приложения с использованием Jenkins.

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

Почему я больше не делаю важные дела: и еще 3 правила как не потерять себя к 40 годам

Level of difficultyEasy
Reading time8 min
Views147K

До 30 лет кажется, что ты еще успеваешь завоевать мир. Кое-кто и вправду успевает. Но вскоре у многих появляются дети, а поясница с желудком потихоньку выходят из игры. Тогда-то и начинаешь понимать – жизнь чертовски быстро заканчивается. В этой статье поговорим о том, как не просрать ее окончательно.

Читать далее
Total votes 156: ↑121 and ↓35+112
Comments243

Сериализация данных на уровне базы

Reading time3 min
Views7.5K

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


Сидел я как-то и пытался отдать фронту JSON с объектами недвижимости, у которых была масса зависимостей. На бэке стояла Symfony 4, knp pagination и JMSSerializer, ну в принципе стандартные вещи, но проблема в том, что когда ты пытаешься отдать объект со всеми вложенными сущностями и коллекциями, то все начинает тормозить на уровне сериализации этих данных.


Сначала нужно сделать запрос в базу, потом сериализатор подтянет постепенно все остальное, потом все это будет обернуто в JSON и только потом все вернется на фронт.


Идея


У меня появилась идея, а почему бы не возвращать на фронт с бэка сразу JSON напрямую из базы, да, надо написать офигительный SQL, но ведь можно сделать инструмент который это сделает за вас. Я принялся за написание идеи, репозиторий на гитхабе, за основу взята модель данных из доктрины, связи OneToOne, ManyToOne, OneToMany и ManyToMany. Так же этот инструмент легко можно прикрутить к Symfony 4 и он сам себя настроит, в итоге вам нужно будет только заинъектить фабрику QueryBuilderFactory и получить оттуда QueryBuilder для нужной таблицы по классу сущности.


Так же мой сериализатор использует группы сериализации которые вы можете задать с помощью аннотации Expose на поле сущности, не забудьте так же на сущность навесить аннотацию Table и указать алиас таблицы, лучше использовать те, которые вы обычно задаете.


Пример генерации SQL


<?php

use \Mash\MysqlJsonSerializer\QueryBuilder\Table\JoinStrategy\FieldStrategy;
use \Mash\MysqlJsonSerializer\Wrapper\FieldWrapper;
use \Mash\MysqlJsonSerializer\QueryBuilder\Table\Table;
use \Mash\MysqlJsonSerializer\Wrapper\Mapping;
use \Mash\MysqlJsonSerializer\QueryBuilder\QueryBuilder;

$oneToManyTable = (new Table('advert_group', 'adg', 'adg_id'))
    ->addSimpleField('adg_id')
    ->addSimpleField('adg_name')
;

$table = (new Table('estate', 'est', 'est_id'))
    ->addSimpleField('est_id')
    ->addSimpleField('est_name')
    ->addOneToManyField($oneToManyTable, 'advert_groups', new FieldStrategy('adg_estate'));

$mapping = new Mapping();
$mapping
    ->addMap($table, 'est_id', 'id')
    ->addMap($table, 'est_name', 'name')
    ->addMap($oneToManyTable, 'adg_id', 'id')
    ->addMap($oneToManyTable, 'adg_name', 'name');

$builder = new QueryBuilder($table, new FieldWrapper($mapping));
$builder
    ->setOffset(2)
    ->setLimit(1);

$sql = $builder->jsonArray();

В результате будет сгенерирован следующий SQL:


SELECT JSON_ARRAYAGG(JSON_OBJECT('id',est_res.est_id,'name',est_res.est_name,'advert_groups',(SELECT JSON_ARRAYAGG(JSON_OBJECT('id',adg.adg_id,'name',adg.adg_name)) FROM advert_group adg INNER JOIN estate est_2 ON est_2.est_id = adg.adg_estate WHERE est_2.est_id = est_res.est_id))) FROM (SELECT * FROM estate est  LIMIT 1 OFFSET 2) est_res

Результат:


[{"id": 3, "name": "Москва, окская улица, 3к1", "advert_groups": [{"id": 10, "name": "avito-1115362430"}]}]
Читать дальше →
Total votes 18: ↑13 and ↓5+8
Comments2

Выбираем базовые образы для приложений на .NET: минимум уязвимостей, максимум быстродействия

Level of difficultyMedium
Reading time14 min
Views5.8K

Микросервисы и контейнеры для их развертывания сейчас являются стандартом в крупных компаниях. Для разработчиков и DevOps-инженеров это удобный подход: он дает больше возможностей и ускоряет процессы.

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

Меня зовут Саша Рахманный, я разработчик в команде информационной безопасности в Lamoda Tech. В этой статье я сравню разные базовые образы для .NET с точки зрения безопасности их компонентов и быстродействия. 

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

Читать далее
Total votes 33: ↑33 and ↓0+35
Comments6

Кто такой продакт-менеджер?

Level of difficultyEasy
Reading time8 min
Views161K

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

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

Читать далее
Total votes 6: ↑3 and ↓3+5
Comments5

С нуля до 3,7 миллиардов. История стартапа AppDynamics

Level of difficultyEasy
Reading time9 min
Views5.9K


Статистика утверждает, что в Кремниевой долине успеха достигает только 1 стартап из 100. Если говорить о компаниях, разрабатывающих программные продукты, то тут цифры еще более скромные. Кажется, на рынке ПО уже давным-давно всё изобретено, и придумать что-то новое, а главное — востребованное сегодня практически невозможно. Тем интереснее история индийского IT-предпринимателя Джиоти Бансала, приехавшего «покорять Америку» сразу после окончания института, и спустя полтора десятилетия ставшего долларовым мультимиллионером, а созданная им компания была продана за 3,7 миллиардов долларов.
Читать дальше →
Total votes 18: ↑18 and ↓0+18
Comments3

Паттерн Space-Based для масштабируемых систем

Level of difficultyMedium
Reading time7 min
Views2.8K


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

Одним из подходов, который обещает решить эти проблемы, является Space-Based архитектура, или SBA. Эта модель, также известная как «tuple space» или «shared nothing» архитектура, предлагает уникальный способ организации и управления данными и обработкой, который может масштабироваться практически без ограничений.
Читать дальше →
Total votes 13: ↑7 and ↓6+3
Comments3

Брокер сообщений NATS: как мы решали проблему скоростной и стабильной доставки сообщений

Reading time7 min
Views37K

Всем привет. Меня зовут Женя, я работаю, как это сейчас модно говорить, DevOps-инженером в компании Garage Eight. 

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

Однажды перед нами встала задача максимально быстрой доставки сообщений из пункта A в пункт B. Условия были таковы:

* Перед тем как сообщение достигнет пункта назначения, оно проходит ряд сервисов;

* Каждый сервис выполняет определенный набор действий над этим сообщением;

* Скорость прохождения сообщений через весь путь должна быть минимальной;

* Брокер сообщений должен работать стабильно 24\7.

В статье я расскажу, как мы это делали

Читать далее
Total votes 12: ↑11 and ↓1+12
Comments27
1
23 ...

Information

Rating
Does not participate
Registered
Activity