Pull to refresh
15
0
Валерий Шинкевич @kxl

Разработчик ПО

Send message

Оцениваем сложность алгоритмов на C# по памяти и времени с примерами

Level of difficultyHard
Reading time10 min
Views4.5K

Продолжаем говорить о производительности и оптимизации кода. Сегодня поговорим о том, как и зачем оценивать сложность алгоритмов,  а также наглядно покажем, как эта сложность влияет на производительность кода.

Читать далее
Total votes 8: ↑6.5 and ↓1.5+5
Comments18

GPT-4: Чему научилась новая нейросеть, и почему это немного жутковато

Level of difficultyEasy
Reading time23 min
Views242K

В этой статье мы разберем новые удивительные способности последней языковой модели из семейства GPT (от понимания мемов до программирования), немного покопаемся у нее под капотом, а также попробуем понять – насколько близко искусственный интеллект подошел к черте его безопасного применения?

Поехали →
Total votes 208: ↑200 and ↓8+192
Comments338

Как работает ChatGPT: объясняем на простом русском эволюцию языковых моделей с T9 до чуда

Level of difficultyEasy
Reading time30 min
Views367K

В последнее время нам почти каждый день рассказывают в новостях, какие очередные вершины покорили языковые нейросетки, и почему они уже через месяц совершенно точно оставят лично вас без работы. При этом мало кто понимает — а как вообще нейросети вроде ChatGPT работают внутри? Так вот, устраивайтесь поудобнее: в этой статье мы наконец объясним всё так, чтобы понял даже шестилетний гуманитарий!

Погнали →
Total votes 357: ↑350 and ↓7+343
Comments283

Работа с Kubernetes: поднимаем локальный кластер и деплоим в него приложения

Reading time5 min
Views12K

Павел Агалецкий, ведущий разработчик юнита Platform as a Service Авито, написал, как поднять кластер Kubernetes на локальном компьютере Mac с помощью подручных инструментов, а потом задеплоить в него простейшие приложения.

Читать далее
Total votes 13: ↑11 and ↓2+9
Comments5

Микросервисы прагматика: как построить большую систему с помощью пачки монолитов

Level of difficultyMedium
Reading time22 min
Views6.7K

...

Попробую, попытаюсь объяснить. Наверное, для кого-то это будет оправданием, но я просто объясняю.

Как быстро зафейлить новый проект Java? Просто взять и применить все, что ты услышал на последней Java конференции;) Как быстро сделать энтерпрайзный проект минимальной командой в короткие сроки? Верно — подобрать оптимальную архитектуру и правильные инструменты. Senior Developer из команды Jmix Дмитрий Черкасов рассказывает о компромиссном варианте между хайповыми (все еще) микросервисами и монолитами, который называется Self-Contained Systems. Кажется, он выпьет меньше крови и сохранит ваши нервы. Дальше — рассказ от первого лица.

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

Программирование устройств на основе модуля ESP32

Reading time26 min
Views180K
Микроконтроллер — это интегральная схема, способная выполнять программы. Сегодня на рынке представлено множество таких моделей от самых разных производителей. Цены на эти устройства продолжают падать. Однокристальные чипы находят широкое применение в самых разнообразных сферах: от измерительных приборов до изделий развлечений и всевозможной домашней техники. В отличие от персональных компьютеров микроконтроллер сочетает в одном кристалле функции процессора и периферийных устройств, содержит оперативную память и постоянное запоминающее устройство в для хранения кода и данных, однако обладает значительно мешьшими вычислительными ресурсами. ESP32 — это микроконтроллер, разработанный компанией Espressif Systems. ESP32 представляет собой систему на кристалле с интегрированным Wi-Fi и Bluetooth контроллерами. В серии ESP32 используется ядро Tensilica Xtensa LX6. Платы с ESP32 обладают хорошей вычислительной способностью, развитой периферией и при этом весьма популярны ввиду низкой цены в диапазоне 7$ – 14$: Aliexpress, Amazon.

image
Читать дальше →
Total votes 32: ↑30 and ↓2+28
Comments5

SNR-ERD: От “пинговалки” до линейки оборудования

Reading time7 min
Views22K
image

Начало двухтысячных — бурное развитие телекоммуникационных сетей. Монтажники, сутки напролет проводившие на крышах, прокладывая кабель до конечного абонента, остро нуждались в устройствах для проверки соответствия кабеля подключенному порту. Остро стояла и проблема “зависания” оборудования. Монтажникам приходилось постоянно курсировать между узлами связи и перезагружать их вручную. Так возникла идея разработки первого SNR-ERD.
Total votes 20: ↑19 and ↓1+18
Comments46

Удалённое управление питанием и перезагрузкой компьютера, при помощи внешнего девайса

Reading time9 min
Views37K

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

Ехать обратно — опоздаешь на работу. А ведь ситуация может развиваться и гораздо более драматично: допустим, человек поехал куда-то далеко за рубеж, в отпуск, и там ему приходит важный звонок, по результатам которого ему необходимо передать своему визави,- определённые документы. А документы остались дома! А дом находится за границей!

Или вот ещё такая беда: ваш персональный компьютер является мощной графической станцией, на которой установлено множество тяжёлых программ для работы с графикой, программными продуктами. А вы перемещаетесь по городу, имея в руках всего лишь «тонкий» клиент, в виде ноутбука…

Из этого описания становится понятно, что «тонкий» клиент не обладает соответствующей производительностью, для запуска множества высокопрофессиональных программ и проектов. Да и если даже он у вас достаточно мощный, — это в принципе неудобно, каждый раз синхронизировать проекты с «тонким» клиентом. Как быть в описанных выше ситуациях — мы и поговорим в этой статье.
Читать дальше →
Total votes 44: ↑42 and ↓2+40
Comments76

Machine Learning инженер: что/где/как изучать, чтобы въехать

Reading time12 min
Views27K

Привет, хаброчеловек!

В этой статье мы обсудим путь среднестатистического обывателя в Machine Learning, а именно — как стать ML-инженером. Поговорим о специфике области, какие требуются знания и скиллы, что нужно делать и с чего начать.

Читать далее
Total votes 13: ↑12 and ↓1+11
Comments4

Calypso: Схема данных MongoDB на Scala

Level of difficultyHard
Reading time8 min
Views4.2K

Чтобы применять Domain-Driven Design, DDD Aggregate и Transactional outbox на MongoDB, наша команда создала open source — библиотеку calypso для работы с BSON.

Публикация для тех, кто стремится к современным практикам разработки и разделяет наше влечение к Scala 3.

Готовы к открытиям? Добро пожаловать в мир функционального программирования и надёжной работы с schema-on-read.

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

Чему можно научиться у фикуса-душителя? Паттерн Strangler

Reading time6 min
Views9.2K

При рефакторинге монолита на микросервисы часто мы уже обладаем работающей системой. У которой миллионы, тысячи активных пользователей. Возможно их 20, но они очень важные и очень активные. Как в таком случае отрефакторить все, чтобы внешне никто ничего не заметил? И как в этом поможет тропический фикус-душитель?

Читать далее
Total votes 18: ↑17 and ↓1+16
Comments4

Как реализовать магию Sqoop для загрузки данных через Spark

Reading time29 min
Views2.5K

Очень часто приходится слышать, что Sqoop — это серебряная пуля для загрузки данных большого объёма с реляционных БД в Hadoop, особенно с Oracle, и Spark-ом невозможно достигнуть такой производительности. При этом приводят аргументы, что sqoop — это инструмент, заточенный под загрузку, а Spark предназначен для обработки данных.

Меня зовут Максим Петров, я руководитель департамента "Чаптер инженеров данных и разработчиков", и я решил написать инструкцию о том, как правильно и быстро загружать данные Spark, основываясь на принципах загрузки Sqoop.

Первичное сравнение технологий

В нашем примере будем рассматривать загрузку данных из таблиц OracleDB.

Рассмотрим случай, когда нам необходимо полностью перегрузить таблицу/партицию на кластер Hadoop c созданием метаданных hive.

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

Посторонись, Copilot: подборка разнообразных AI-инструментов для разработчиков

Level of difficultyEasy
Reading time4 min
Views29K

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

Читать далее
Total votes 34: ↑32 and ↓2+30
Comments8

YTsaurus SPYT: помогаем планировщику Apache Spark быть ещё эффективнее

Level of difficultyHard
Reading time13 min
Views2.2K

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

Ещё с университетских времён я исследую распределённые системы, а последние два года в Яндексе адаптирую Apache Spark к внутренней инфраструктуре. Эта статья посвящена Apache Spark, а именно: как мы в рамках YTsaurus делали его ещё эффективнее. Написана она по мотивам моего доклада для «Онтико».

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

Как быстро интегрировать Систему быстрых платежей (СБП) в приложение на Flutter

Level of difficultyMedium
Reading time7 min
Views6.8K

Всем привет! Меня зовут Мурат Насиров, я Flutter-разработчик в Friflex. Мы разрабатываем мобильные приложения и специализируемся на решениях для ритейла. На одном из наших проектов мне пришлось столкнуться с внедрением кнопки оплаты через Систему Быстрых Платежей (СБП). В этой статье я хочу поделиться своим опытом и наработками в быстрой интеграции нативных компонентов SDK СБП в кроссплатформенное приложение на Flutter.

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

Изучаем Q#. Алгоритм Гровера. Не будите спящего Цезаря

Level of difficultyEasy
Reading time14 min
Views4.6K

Криптохомячкам посвящается ...


Алгоритм Гровера представляет собой обобщённый, независящей от конкретной задачи поиск, функция которого представляет "чёрный ящик" f: {0,1}^n to {0,1}^n, для которой известно, что EXISTS!w:f(w)=a, где a — заданное значение.


Считаем, что для f и заданного a можно построить оракул Uf: { |w> to |1>, |x> to |0> if |x> != |w> }


Алгоритм Гровера достаточно прост


  1. Задаём в регистре (массиве кубитов) начальное значение H|0>
  2. Повторяем несколько раз (исходя из оценки) пару трансформаций над регистром
    • Отражение от решения Uw: { |w> to -|w>, |x> to |x> if |x> != |w> } или Uw = I-2|w><w|
    • Отражение от s=H|0> Us = 2|s><s|-I
  3. Забираем нужное решение из регистра (с большой долей вероятности, что оно правильное)

Не будите спящего Цезаря!


Применим этот алгоритм для решения задачи нахождения ключа шифра Цезаря ...

Читать дальше →
Total votes 9: ↑7 and ↓2+5
Comments4

Диск – это лава. Исследуем методы выполнения пейлоада в памяти

Reading time22 min
Views7.8K

Привет, Хабр! Меня зовут Миша, я работаю в МТС RED в команде тестирования на проникновение на позиции эксперта.

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

Ни для кого не секрет, что во время пентестов атакующим приходится использовать готовые инструменты, будь то нагрузка для Cobalt Strike, серверная часть от поднимаемого прокси-сервера или даже дампилка процесса lsass.exe. Что объединяет все эти файлы? То, что все они давным-давно известны антивирусам, и любой из них  не оставит без внимания факт появления вредоноса на диске.

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

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

Все, что вам нужно знать об Airflow DAGs, ч.1 — Основы и расписания

Reading time20 min
Views57K

Полное руководство по созданию DAG в Apache Airflow DAG, позволяющих создать конвейер данных из разных источников, запускаемый в определенные периоды времени с заданной логикой. Первая часть. Источник: DAGs: The Definitive Guide от astronomer.io

Добро пожаловать в полное руководство по Apache Airflow DAG, представленное командой Astronomer. Эта электронная книга охватывает все, что вам нужно знать для работы с DAG, от строительных блоков, из которых они состоят, до рекомендаций по их написанию, динамической генерации, тестированию, отладке и многому другому. Это руководство, написанное практикующими для практикующих.

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

Искусство ETL. Пишем собственный движок SQL на Spark [часть 2 из 5]

Level of difficultyHard
Reading time13 min
Views1.6K

image


В данной серии статей я подробно расскажу о том, как написать на Java собственный интерпретатор объектно-ориентированного диалекта SQL с использованием Spark RDD API, заточенный на задачи подготовки и трансформации наборов данных.

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


Предупреждение о рейтинге «M for Mature»

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

Читать дальше →
Total votes 10: ↑10 and ↓0+10
Comments2

Разработка систем генеративного ИИ на базе ML Platform: создаем конкурента ChatGPT без миллионных инвестиций

Reading time8 min
Views6.8K


2023-й — однозначно год генеративного искусственного интеллекта и сервисов на его основе, которые используют в разных кейсах и сценариях. Но даже при этом для многих сфера генеративного ИИ остается на уровне пользовательского интереса. Это упущение, ведь потенциал GPT-моделей и им подобных не ограничен поиском ответов на классические вопросы и даже ассистированием в процессе разработки. А их создание не относится к числу нерешаемых задач тысячелетия. GPT — технология, которую можно приручить, и это проще, чем кажется.
Читать дальше →
Total votes 23: ↑22 and ↓1+21
Comments5
1
23 ...

Information

Rating
Does not participate
Location
Нижний Новгород, Нижегородская обл., Россия
Date of birth
Registered
Activity

Specialization

Lead Software/Data Engineer