Pull to refresh
7
0
Андрей Бычко @courage_andrey

инженер-программист

Send message

Prompt Me One More Time. Учим LLM строить графы знаний из текстов

Level of difficultyHard
Reading time10 min
Views4.6K

Привет, Хабр! Меня зовут Алла, я работаю младшим исследователем в команде Memory‑Augmented models в AIRI и занимаюсь ресерчем на пересечений графов знаний и языковых моделей. Потребность в таких изысканиях понятна любому, кто пытался добиться от ChatGPT точного ответа на конкретный вопрос: подобрать литературу для курсовой, вспомнить название фильма по описанию и тому подобное. Очень часто модель начинает галлюцинировать и выдумывать факты, которых не существует.

Один из способов решения этой проблемы — связать LLM с графом знаний, но сами графы тоже должен кто‑то наполнять. Мы с коллегами доказали, что эту задачу можно автоматизировать с помощью LLM и предложили своё решение, названное Prompt Me One More Time (фанаты Бритни тут?), о котором мне бы и хотелось сегодня здесь рассказать. За подробностями же можно обратиться к статье, представлена нами на воркшопе TextGraphs-17 конференции ACL-2024, недавно прошедшей в Тайланде.

Читать далее
Total votes 14: ↑12 and ↓2+14
Comments8

3D рендер с редактором карт в Консоли (Часть 2)

Level of difficultyMedium
Reading time8 min
Views2.9K

Сегодня я собираюсь продолжить рассказ про свой 3D рендер в командной строке Windows и разобрать те темы, которых не коснулся в 1 Части.

На этот раз в статье будет больше кода и меньше математики (а также много скриншотов).

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

3D рендер с редактором карт в Консоли (Часть 1)

Level of difficultyMedium
Reading time13 min
Views5.7K

Привет!

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

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

Создание игр на Unity: с чего начать?

Level of difficultyEasy
Reading time14 min
Views13K

Создание игр на Unity: с чего начать?

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

Читать подробнее
Total votes 8: ↑6 and ↓2+9
Comments9

«Некрасивое» получение TCP-статистики существующего сетевого соединения в desktop-приложении .NET для Windows

Level of difficultyMedium
Reading time4 min
Views1.6K

Некоторое время назад у одного из клиентов начало сбоить desktop‑приложение, в разработке которого я участвовал. Проблему локализовать не получалось очень долго — в том числе потому, что она никак не воспроизводилась на компьютерах и разработчиков, и тестировщиков.

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

Эта заметка о том, как без использования Wireshark добавить в приложение.NET Framework /.NET 5+ для Windows код получения статистики TCP‑соединения (количество перезапрошенных (retransmitted) и переупорядоченных (reordered) байт, а также некоторую другую информацию).

Вполне вероятно, эти данные пригодятся и вам — если вы используете долгоживущие или «бесконечные» TCP‑соединения (по типу Twitter Streaming API).

Итак, приступим!

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

Асинхронный веб: WebSocket, Server-Sent Events, Long Polling и Short Polling

Level of difficultyMedium
Reading time13 min
Views15K

Веб-разработка часто требует реализации механизмов обновления контента на странице в реальном времени. Существуют различные сценарии, где это необходимо, например, отображение прогресса выполнения тяжелых задач на бекенде, обновление каких-либо часто меняющихся данных, будь то курсы валют или мониторинг какой-то активности, чаты, различные уведомления. Эти сценарии объединяет одна общая особенность: источник события необходимости обновления данных находится не на клиентской стороне, поэтому мы хотим получать события с бекенда. В данной статье мы рассмотрим четыре популярных подхода к реализации этой функциональности: WebSocket, Server-Sent Events (SSE), Long Polling и Short Polling.
Мы проанализируем каждый метод, выявим их плюсы, минусы и сложность реализации.

Читать далее
Total votes 17: ↑15 and ↓2+18
Comments11

Век поиска кратчайшего решения задачи о кратчайшем пути

Level of difficultyMedium
Reading time22 min
Views11K

TL;DR Очень подробный разбор алгоритмов решения задачи о кратчайшем пути от классики до двунаправленного А* и ALT с кодом и примерами на OSM

Люди пытались найти более быстрые способы передвижения на протяжении всей своей истории. Появление качественной дорожной системы в римской империи в своё время привело к её расцвету, но со временем выяснилось, что и в продуманных дорожных системах бывают забавные изъяны, как например в небезызвестной задаче о кёнигсбергских мостах, считающейся отправной точкой возникновения теории графов. Неудивительно и то, что с развитием вычислительной техники логистические задачи стали одними из первых, над которыми трудились первопроходцы компьютерных наук. Задача о кратчайшем пути -- одна из них, звучит достаточно просто: есть несколько городов и дорог, соединяющих пару городов между собой, мы хотим попасть из города А в город Б пройдя при этом минимальное расстояние. Первый системный подход к этой задаче был описан в работе Эгервари в 1931г., спустя 25 лет Эдсгер Дейкстра придумал алгоритм, который сейчас является частью любого уважающего себя базового курса алгоритмов на графах. На нём же, будем честны, заканчиваются знания о кратчайших путях у большинства профессиональных разработчиков, ибо сценариев, где реализации с википедии/stackoverflow будет не хватать, крайне мало.

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

Читать далее
Total votes 42: ↑42 and ↓0+52
Comments14

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

Level of difficultyMedium
Reading time11 min
Views11K

Давным-давно, когда Linux был ещё на ядре 2.6, а PHP5 был глотком свежего воздуха, я впервые заинтересовался миром веб-технологий. Читал учебники, статьи, зависал на форумах, но все равно мало мог понять как код, который я вижу на экране, превращается в волшебные сайты с кнопками, формами и анимациями. Узнал про LAMP и его аналоги для Windows, узнал, что, оказывается, есть хостинги, где такие сайты размещаются. Как только появился внешний интернет без трафика, я поспешил перенести свои локальные поделия во внешний мир, попутно узнав про замечательный протокол FTP. Просто мир волшебных открытий был для меня, особенно когда узнал, что не нужно писать свой форум с нуля, а можно использовать что-то из phpBB, vBulletin и других уже готовых движков.

И когда я много лет спустя переключился в мир .NET, перечисленные ранее умения сыграли со мной злую шутку – я долго не мог понять, как мне найти хостинг для .NET приложений. Почему все известные мне хостинги с лёгкостью предоставляли возможность развернуть PHP приложения, причём даже предлагая какие-то предустановленные версии CMS, но днём с огнём не сыщешь хостинг под .NET. Мое непонимание принципа развертывания приложений усугубляли статьи, которые предлагали их размещать в подходящих сервисах типа Heroku, Digital Ocean или Azure – ведь это так просто и дешево…

Поэтому предлагаю максимально подробно рассмотреть вопрос публикации .NET приложений в арендованном VPS.

Читать далее
Total votes 26: ↑22 and ↓4+26
Comments31

Docker — не то, чем кажется

Level of difficultyEasy
Reading time6 min
Views38K

Привет, Хабр! Меня зовут Матвей Мочалов, я — компьютерный инженер и один из авторов корпоративного блога cdnnow! Мы с вами познакомились в этом посте про историю DRM для видеоконтента. Сегодня я хочу поговорить с вами про Docker, а точнее про то, о чём многие забывают: различиях в нём для разных систем. Нам, как CDN-провайдеру Docker, все его 50 оттенков близки и знакомы. И, к счастью, наше взаимодействие с ним происходит из-под Linux, но, увы, не всем так везёт.

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

Читать далее
Total votes 63: ↑58 and ↓5+65
Comments88

Основные типы распределений вероятностей в примерах

Level of difficultyMedium
Reading time15 min
Views28K

Статистические исследования и эксперименты являются краеугольным камнем развития любой компании. Особенно это касается интернет-проектов, где учёт количества пользователей в день, времени нахождения на сайте, нажатий на целевые кнопки, покупок товаров является обычным и необходимым явлением. Любые изменения в пользовательском опыте на сайте компании (внешний вид, структура, контент) приводят к изменениям в работе пользователя и, как результат, изменения наблюдаются в собираемых данных. Важным элементом анализа изменений данных и его фундаментом является использование основных типов распределений случайных величин, от понимания которых напрямую зависит качество оценки значимости наблюдаемого изменения. Рассмотрим их подробнее на наглядных примерах.

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

Затыкаем рот Windows 10

Level of difficultyHard
Reading time33 min
Views114K


Windows 10 очень любит Интернет. Обновления, синхронизации, телеметрия и ещё куча разной другой очень нужной ЕЙ информации постоянно гуляет через наши сетевые соединения. В «стандартном» сценарии использования, когда Windows 10 управляет домашним или рабочим компьютером, это, в общем-то, терпимо, хотя и не очень приятно.

Однако жизнь сложная штука и не ограничивается только стандартными вариантами. Существуют ситуации, когда подобная сетевая активность операционной системы (ОС) нежелательна и даже вредна. За примерами далеко ходить не надо. Попробуйте подключить к Интернету давно не используемый резервный компьютер, собранный на старом железе. Пока софт на нём не обновится, использовать его будет практически невозможно, всё будет дико тормозить и еле шевелиться. А если вам в этот момент нужно срочно что-то сделать?

Для того чтобы подобного не происходило, необходимо «заткнуть рот Windows», то есть сделать так, чтобы она самостоятельно перестала «стучаться» в Интернет, устанавливать обновления и заниматься прочими непотребствами. Вот именно этим мы с вами и займёмся.
Читать дальше →
Total votes 170: ↑160 and ↓10+196
Comments309

GPT-like модель «впервые сделала научное открытие»: что, как, и куда дальше?

Level of difficultyMedium
Reading time21 min
Views108K

14го декабря в одном из самых авторитетных общенаучных журналов Nature была опубликована статья с, кажется, сенсационным заголовком: «ИИ-модели Google DeepMind превосходят математиков в решении нерешённых проблем». А в блогпосте дочки гугла и вовсе не постеснялся указать, что это — первые находки Больших Языковых Моделей (LLM) в открытых математических проблемах. Неужели правда? Или кликбейт — и это в Nature? А может мы и вправду достигли техносингулярности, где машины двигают прогресс? Что ж, давайте во всём разбираться!

Ну давай разберёмся →
Total votes 153: ↑149 and ↓4+174
Comments272

Chrome следит за тобой

Level of difficultyEasy
Reading time3 min
Views37K

4 сентября 2023 года я получил уведомление о том, что хром меняет политику приватности. Казалось бы, нужно ли обращать на это внимание? Обычно я нажимал "Согласен" и жил себе спокойно жизнью. Но в этот раз это уведомление зацепило мой взгляд.

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

Читать далее
Total votes 34: ↑28 and ↓6+31
Comments271

Фильтрация избыточных вершин в геометриях 3D моделей

Level of difficultyMedium
Reading time6 min
Views2.5K

Всем привет! Меня зовут Евгений, я backend‑разработчик в компании Bimeister. Сегодня я хотел бы продолжить рассказ о нашем 3D движке Spatium. В статье речь пойдет еще об одном из алгоритмов оптимизации - поиске и удалении избыточных вершин из 3D моделей.

Материал может представлять интерес для инженеров, связанных с проектированием и разработкой в области 3D.

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

Как работает компьютер: глубокое погружение (на примере Linux)

Level of difficultyHard
Reading time48 min
Views160K



Введение


Я делала много вещей с компьютерами, но в моих знаниях всегда был пробел: что конкретно происходит при запуске программы на компьютере? Я думала об этом пробеле — у меня было много низкоуровневых знаний, но не было цельной картины. Программы действительно выполняются прямо в центральном процессоре (central processing unit, CPU)? Я использовала системные вызовы (syscalls), но как они работают? Чем они являются на самом деле? Как несколько программ выполняются одновременно?


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


И, как говорится, ты по-настоящему знаешь что-то, только если можешь объяснить это другому.


Более удобный формат статьи.

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

Виды баз данных. Большой обзор типов СУБД

Reading time21 min
Views111K

Часто, в обзорах видов баз данных упоминают реляционные и “другие”, “NoSQL” и т.д., либо приводят самые основные типы СУБД (базы данных), забывая о редких. В данной статье я постараюсь описать максимально полно виды баз данных и привести примеры конкретных реализаций. Разумеется, статья не претендует на всеохватность и классифицировать базы данных можно по разному, в том числе по типам оптимальной нагрузки и т.д., но надеюсь, она даст базовое представление о видах СУБД и принципах их работы.

В статье мы рассмотрим следующие типы баз данных:

Читать далее
Total votes 38: ↑36 and ↓2+38
Comments16

Обработка больших и очень больших графов

Level of difficultyMedium
Reading time18 min
Views4.4K

Однажды ко мне обратилась одна крупная фруктовая телефонная компания с просьбой подготовить для них курс по Apache Spark продвинутого уровня, и в нем обязательно должен быть раздел про обработку графов (Neo4j не предлагать). На тот момент я знал про классические алгоритмы обработки графов на базе DFS (поиск в глубину) и BFS (поиск в ширину). При этом неотъемлемым условием применения того или иного подхода является локальная поддержка стека (DFS) или очереди (BFS). Следовательно, классические алгоритмы можно применять для обработки графов, которые умещаются в память одной машины.

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

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

125 простых советов по улучшению юзабилити вашего сайта

Reading time22 min
Views15K

Эту статью Ника Коленды я перевёл ещё в конце 2016 года. И не просто перевёл, а ещё и сопроводил комментариями от лица бренда, под которым проектирую интерфейсы все эти годы.

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

Свои старые комментарии я немного освежил и оформил в виде цитат.

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

Читать далее
Total votes 28: ↑26 and ↓2+33
Comments11

Какие 5 особенностей мышления помешают вам перейти из найма в бизнес

Level of difficultyEasy
Reading time7 min
Views8.1K

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

Читать далее
Total votes 30: ↑23 and ↓7+23
Comments13

Алгоритмы балансировки нагрузок

Level of difficultyMedium
Reading time8 min
Views40K

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

В этом посте мы рассмотрим способы, которыми один балансировщик нагрузок может распределять HTTP-запросы на множество серверов. Мы начнём снизу и проделаем весь путь вверх до современных алгоритмов балансировки нагрузок.
Читать дальше →
Total votes 88: ↑87 and ↓1+105
Comments16
1

Information

Rating
Does not participate
Location
Warszawa, Warszawa, Польша
Registered
Activity