Давайте рассмотрим, как использовать линейную алгебру и тензорные операции, чтобы создать всем известную игру в 12 строк.
Будем использовать PyTorch и NumPy. Можно было использовать даже какую-то одну из библиотек, но у PyTorch прекрасное Tensor API, а в NumPy есть хорошая функция под названием unravel_index, которую мы и будем использовать.
Читать далееYandex Query Language (YQL) — универсальный декларативный язык запросов к системам хранения и обработки данных, разработанный в Яндексе. А ещё это один из самых нагруженных сервисов: YQL ежедневно обрабатывает около 800 петабайт данных и 600 000 SQL-запросов, и эти показатели постоянно растут.
Изначально YQL основывался на операциях MapReduce, которые эффективны для больших данных. Но для средних объёмов данных (до 50 Гб, которые составляют около 60% запросов) этот подход оказался неоптимальным, потому что нужно было обмениваться данными между операциями через диск. Поэтому разработчики создали новый более гибкий стриминговый движок, который значительно ускоряет обработку данных за счёт выполнения всех вычислений в памяти.
В этой статье я хочу рассказать о подходах и технологиях в разработке систем для обработки данных на примере YQL. Основное внимание я уделил переходу от MapReduce к стриминговому движку, который обеспечивает более эффективную обработку данных, вмещающихся в память, и который доступен в опенсорсе.
Читать далееВ мае 2023 года наши партнёры из Positive Technologies объявили о скором выпуске PT NGFW и показали достаточно высокие цифры производительности. Российский рынок, который испытывает явный дефицит высокоскоростных межсетевых экранов нового поколения, воспринял анонс с большим энтузиазмом и сейчас ждет выхода коммерческой версии PT NGFW. Но команда Innostage предпочитает не верить на слово, а проверять все в собственной лаборатории, поэтому мы протестировали раннюю версию PT NGFW продукта и делимся с вами отчетом этих испытаний.
Читать далееТри недели назад мы провели наше второе исследование рынка труда и зарплат. В опросе приняло на 20% больше работников по сравнению с прошлым. Спасибо всем участникам! Теперь мы готовы поделиться с вами результатами.
Читать далееХабр, привет!
В начале своего пути я далеко не сразу смог понять, кто же такие эти ваши требования, как их писать и как они должны выглядеть? Предлагаю взглянуть на мое видение идеальной доки, покрывающие все аспекты проекта. Данный шаблон охватывает все аспекты проекта: бизнес-анализ, системный анализ и продуктовую аналитику.
Идеальная документация должна выполнять две основные функции...
Читать далееСобеседования больная тема для многих людей — кто-то ходит на них для проверки своих знаний, дабы не терять навыки, а кто-то прибегает к собесам только в самом крайнем случае: нужно повысить зарплату, хочется поменять проект или условия. Но все мы испытываем перед собеседованиями непонятную тревогу, чувствуем себя самозванцами и боимся сделать лишний шаг, допустить ошибку.
Сегодня я хочу поделиться с вами своей историей, каждый может увидеть себя в ней. Путь от зеленого студента, боящегося собесов как огня и не работавшего ни дня в жизни. До специалиста, который не боится собеседований, а ходит на них с интересом и уверенностью в своих силах.
Пройти 15 этапов собеседованийВсем привет, хочу рассказать о своей утилите dcw (Docker Compose Workspace) для удобного управления тестовыми окружениями на базе docker-compose.
Читать далееСовременная наука, и физика в частности, имеют в своей основе одну, как я полагаю, ложную аксиому. И если её поправить, то всё научное мировоззрение значительно изменится и многое станет гораздо более ясным. Это аксиома о том, что человеческие способности познания Мира безграничны и рано или поздно, при более совершенных приборах и способах исследования, мы познаем всё и до конца.
Когда-то люди считали Землю центром, вокруг которого вращаются и Солнце и звёзды. Коперник разрушил такое представление людей об устройстве Мира. Пришло время разрушить ещё одно неверное представление, о том, что человек это существо, способное генерировать абсолютно объективное знание о Мире с помощью своего сознания.
Читать далееВ данной программе можно будет самостоятельно составлять собственные system massage (в программе это называется «Специализация»), а это по сути своей программирование GPT модели естественны языком, так же можно будет изменять temperature (в программе это названо «Креативность») это изменяет вариативность ответов, при значении 0.0 на один и тот же вопрос будет получен всё время одинаковый ответ при 1.0 могут быть разные ответы с похожим смыслом но разные по словесному выражению, так же можно использовать две модели YandexGPT и YandexGPT Lite, вторая быстрее и чуть попроще но и дешевле в четыре раза. Описание программы в разделе меню «Информация».
Читать далееНичего не нашёл на Хабре про CSpell, попробую исправить ситуацию.
Для среднего проекта с документацией понадобился линтер для проверки опечаток. Одним из условий была локальная и быстрая проверка текста, без отправки на внешние сервера.
Таким инструментом оказался CSpell. Если пишите код в Visual Studio Code, то вы его уже используете. CSpell позиционирует себя как спеллер для кода, но он может также спеллерить и обычные тексты. Давайте подключим его в проект.
Читать далееПредставим следующую задачу: у нас есть микросервисная архитектура, в которой сервисы взаимодействуют через брокер сообщений, или через gRPC. Так или иначе, оба варианта предоставляют полнодуплексный канал связи, через который один сервис может отправлять множество сообщений другому сервису, так и в обратную сторону - сервис, исполняющий запрос, может отправлять несколько ответов (например в случае потоковой обработки данных). Такой вариант реализации ответа можно в некотором смысле называть стримингом.
В числе прочих задач, решаемых при реализации возможности стриминга, существует задача определения ситуации, в которой сервис, исполняющий запрос, упал с ошибкой, и больше не может продолжать стриминг ответов. В таком случае мы даже не можем понять что именно произошло - обработка и отдача очередной порции ответа будет, но задерживается, либо же передача прервалась, и нужно сообщить об ошибке “наверх”. В протоколе HTTP, например, для детерминирования корректной вычитки ответа может быть использован заголовок Content-Length. Достаточно посчитать количество вычитанных из сокета байт тела запроса\ответа, и сравнить со значением заголовка. Сходится - мы все получили, не сошлось и сокет закрыт - ошибка. Однако вариант решения с заранее заданным количеством данных в первой порции ответов не является универсальным, поскольку не во всех случаях можно точно понимать, сколько именно данных будет передано. Да и архитектура с использованием брокеров сообщений предполагает постоянное поддержание соединения, поэтому мы можем только знать, что из такой-то очереди поступают ответы на ранее сделанный запрос, и в каком-то из ответов будет метка окончания, как маркер того, что запрос обработан и ответ выслан и получен полностью, а если такого маркера еще не получено - остается продолжать ждать. Но ждать можно бесконечно.
Читать далееПо каждому из направлений в ИТ есть свои так называемые «приколы» и особенности в части поиска и обучения сотрудников, взаимодействия с софтом, заказчиками и так далее. В моей области, то есть в области информационной безопасности, все еще обсуждают такой вопрос: «Должен ли безопасник расти из программиста?». Имея 25+ лет в области ИТ и ИБ ответственно заявляю — должен. Для меня это не вопрос, но многие со мной не согласятся. Сегодня раскрою свою позицию и объясню, почему безопасникам жизненно необходимо быть программистами.
Небольшое уточнение — для удобства я называю программистами всех, кто пишет код, манифесты, какие‑нибудь конфиги и так далее.
Читать далееПривет, Хабр! Хочу сегодня поговорить о нетривиальных способах применения игр и продолжить тему необычных средств ввода. Игровая индустрия воспринимается, как развлекательная, но границы применения гораздо шире, чем это кажется на первый взгляд. Давайте заглянем в околомедицинскую разработку, узнаем, как контролировать происходящее на экране при помощи дыхания, пульса и сфинктера, и как это помогает игрокам в реабилитации и обучении. Погнали!
Читать далееИли ещё один способ показать своё превосходство над "average Windows fan".
Дружим современный мем со старым и почти забытым инструментом.
Читать далееСотрудники каждого склада, которые хотят выстроить логистические процессы оптимальным образом, должны знать фактические габариты и вес товаров, которые хранятся на его площадях. Совокупность габаритов и веса товара в Ozon называют объёмно-весовыми характеристиками (ОВХ).
Мы разработали, собрали и интегрировали в операционные процессы складов Ozon устройства для измерения габаритов и веса товаров. Об этом мы писали ранее. Но к идее создания своего решения пришли не сразу.
Читать далееПривет, Хабр. Я продолжаю отвечать на вопросы из собеседований на должность фронтендера. Сегодня я отвечу на следующий вопрос: «В чём отличия между значениями block, inline, flex, inline-flex, grid и inline-grid для свойства display?»
Прошу внимания. Мой ответ будет основан на теории, которую я описал в статье «Зачем нужно использовать свойство display?». Прочитайте, пожалуйста, сначала её.
Читать дальше →Любому программисту знакомо понятие "ссылка". Под этим термином обычно понимают небольшой объект, главная задача которого обеспечить доступ к другому объекту, физически расположенному в другом месте. Из-за этого ссылки удобно использовать, они легко копируются, и с их помощью очень просто получить доступ к объекту, на который эта ссылка ссылается и можно получить доступ к одним и тем же данным из разных мест программы.
К сожалению ссылки, точнее ручное управление памятью, является наиболее частой причиной возникновения различных ошибок и уязвимостей в программном обеспечении. А все попытки автоматического управления памятью с помощью различных менеджеров упираются в необходимость контролировать создание и удаление объектов, а так же периодически запускать сборщик мусора, что отнюдь не положительно сказывается на производительности приложений.
Тем не менее, ссылки в той или иной форме поддерживаются во всех языках программирования, хотя под этим термином часто подразумеваются не полностью эквивалентные термины. Например, под словом "ссылка" можно понимать ссылку как адрес в памяти (как в С++) и ссылку, как указатель на объект (как в Python или Java).
Хотя встречаются языки программирования, которые пытаются решать данные проблемы за счет концепции "владения" (Rust, Аргентум или NewLang). О возможном решении этих, и других имеющихся проблем со ссылками далее и пойдет речь.
Читать дальше →