Search
Write a publication
Pull to refresh
0
Василь Бєляєв @VXPread⁠-⁠only

C#, C++, Lua

Send message

Создаем чат-бота на Python: Полное руководство

Level of difficultyMedium
Reading time6 min
Views56K

В этом полном руководстве от DataTech Community мы шаг за шагом рассмотрим процесс создания чат-бота на Python. Откройте для себя мощь NLTK и TensorFlow в обработке естественного языка и машинном обучении, чтобы создать интеллектуального помощника, способного общаться и отвечать на вопросы пользователей. Научитесь подготавливать данные, строить и обучать модель нейронной сети, а затем интегрировать ее в логику чат-бота для создания эффективного и интеллектуального виртуального помощника.

Читать далее

ChromeOS: почему я отказал своей мечте

Reading time7 min
Views31K

Листая ленту Ютуба я наткнулся на видео, которое рассказывало про ChromeOS, систему-браузер для слабых ноутбуков. И тогда я загорелся идеей купить себе такое устройство. Меня привлекала идея полной синхронизации и бесшовности, как у Apple, но в рамках моей любимой системы.

Оказалось ли все так хорошо?

Что будет, если переименовать суперпользователя? Экспериментируем, удивляемся и расстраиваемся…

Reading time15 min
Views24K

В интернете много желающих перебирать пароли к SSH, чтобы получить мощности вашего сервера безвозмездно. Как это можно предотвратить? Отключить вход по паролю? Лениво. Использовать нестандартный порт? Не поможет. Поставить fail2ban? Скучно. Переименовать root? Вот это хорошая идея!

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

Разбираем самый маленький JPEG в мире

Reading time10 min
Views13K

Недавно на Хабре была опубликована статья Разбираем самый маленький PNG в мире. Интересно, а какой самый маленький файл JPEG? В ответах на StackOverflow и Reddit можно встретить размеры 107, 119, 125, 134, 141, 160 байтов. Все они представляют серый прямоугольник 1 на 1. И кто прав? Все правы, просто такая разница объясняется различными режимами кодирования и степенью строгости соответствия стандарту. Описание всех нюансов разрослось до целой статьи cо всеми необходимыми подробностями для более-менее хорошего знакомства с самыми маленькими jpeg-ами. После краткой теории разберем 159-байтный файл на КДПВ, а затем рассмотрим способы его уменьшения.

Читать далее

Анализ безопасности Wi-Fi: атаки на WPA2-Personal / Enterprise и методология взлома WPA3

Reading time13 min
Views49K

Подробное исследование методологии взлома протоколов WPA2-Personal / Enterprise и WPA3: какие атаки и уязвимости существуют, и какой инструментарий применяется для их эксплуатации.

Читать далее

Подделка ssh сервера на Python

Level of difficultyMedium
Reading time4 min
Views6.8K

В этом посте я расскажу, как игрался и создавал на python сокеты, к которым можно подключаться через ssh клиенты, а так же покажу рабочий (но это не точно) пример.

На скриншоте виден пример с сервером, на котором можно оставить свою роспись.

Читать далее

Расширение браузера для управления маршрутами на Микротике

Level of difficultyMedium
Reading time26 min
Views13K

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

Посочувствовать

11 полезных фичей Chrome DevTools

Level of difficultyEasy
Reading time5 min
Views15K

Всем привет!

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

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

Погнали!

Погнали!

Как создать Мету, которая затянет играть сутками

Level of difficultyMedium
Reading time10 min
Views22K

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

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

Читать далее

Калькуляторы с обратной польской нотацией

Level of difficultyMedium
Reading time12 min
Views17K

На хабре уже многократно проскакивали статьи и переводы о калькуляторах с обратной польской нотацией. Раньше я не придавал им большого значения, пока на глаза не попался перевод статьи «Мягкое знакомство с дополнительным кодом», где фигурировал программистский калькулятор HP-16C. Что сподвигло меня разобраться, что за зверь такой «обратная польская нотация» или reverse Polish notation (далее по тексту RPN).

Искра, буря, безумие… Спешно поставив эмулятор HP-16C на телефон, я полез искать калькуляторы с поддержкой RPN, попутно скупая найденные экземпляры. В этой статье хочу поведать о четырёх редких! экземплярах, которые мне удалось найти на отечественных досках объявлений, и дать некоторые рекомендации тем, кто решит прикоснуться к удивительному миру программируемых калькуляторов.
Читать дальше →

Объявление и инициализация переменных в C++

Level of difficultyMedium
Reading time41 min
Views35K


Продолжаем серию «C++, копаем вглубь». Цель этой серии — рассказать максимально подробно о разных особенностях языка, возможно довольно специальных. Это шестая статья из серии, список предыдущих статей приведен в конце в разделе 7. Серия ориентирована на программистов, имеющих определенный опыт работы на C++. Данная статья посвящена объявлению и инициализации переменных.


Переменные являются основой любого языка программирования. В языках со статической типизацией, к которым относится C++, все переменные должны быть объявлены, их тип определяется на стадии компиляции и не может меняться в процессе работы программы. Тип переменных указывается при объявлении явно или выводится компилятором на основе типа инициализирующего выражения.


Во многих языках программирования объявление переменных относится к довольно простым темам, но вот в C++ это не совсем так. Конечно, простые варианты обычно не вызывают затруднений, но вот более сложные случаи могут озадачить даже достаточно опытных программистов. Попробуем разобраться во всех тонкостях объявления переменных. Также рассмотрим тему инициализации, так как чаще всего переменные инициализируются вместе с объявлением.

Читать дальше →

От чего зависит цена оперативной памяти: отличия дорогой и дешевой RAM

Level of difficultyEasy
Reading time6 min
Views14K

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

Читать далее

Универсальная плата для E-Ink экранов. Ч1. Разработка системы питания

Level of difficultyMedium
Reading time13 min
Views8.3K

Однажды мне попался один весьма интересный проект платы, поддерживающей большое количество разнообразных E-Ink экранов. Проект довольно быстро заинтересовал, появилось желание несколько переработать плату, внести улучшения, узнать и попробовать что-нибудь новое. Больше всего изменений претерпела система питания: она была разработана практически с нуля. Процесс оказался очень познавательным и увлекательным, а отладка прототипа преподнесла много поучительных и забавных сюрпризов. Это жизненный рассказ о разработке как есть.
Читать дальше →

Написание минимальной подсистемы хранения данных в памяти для MySQL/MariaDB

Level of difficultyMedium
Reading time24 min
Views6.3K

Я потратил неделю, копаясь во внутренностях MySQL/MariaDB вместе с ещё примерно 80 разработчиками. Хотя MySQL и MariaDB — это, по большей части, одно и то же (я ещё к этому вернусь), я сосредоточился именно на MariaDB.

Раньше я никогда сам не собирал MySQL/MariaDB. В первый день «недели хакерства» я смог наладить локальную сборку MariaDB и твикнул код так, что запрос SELECT 23 возвращал 213. Сделал я и другой твик — такой, что запрос SELECT 80 + 20 возвращал 60. На второй день я смог заставить заработать простую UDF на C, благодаря которой запрос SELECT mysum(20, 30) давал 50.

Остаток недели я потратил, пытаясь разобраться с тем, как сделать минимальный движок для хранения данных в памяти. Именно о нём я и расскажу. Это — 218 строк кода на C++.

Читать далее

Оффлайновое использование Git

Level of difficultyEasy
Reading time6 min
Views16K

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

Система контроля версий Git вполне благополучно работает без удалённого репозитория. Такова её природа. При таком подходе можно создавать ветви репозитория, можно индексировать файлы и коммитить их в репозиторий. Всё выглядит так же, как и при обычной работе.

Читать далее

Привязка нескольких геймпадов к одному игроку в Unreal Engine

Level of difficultyEasy
Reading time4 min
Views1.5K

По умолчанию в Unreal Engine к основному игроку привязываются клава, мышка и первый подключенный геймпад. Остальные устройства автоматически привязываются к другим игрокам. Это нормально если у вас есть поддержка мультиплеера на одном компьютере. Но в single-player игре все может быть грустно. Например, можно завалить тест и не получить заветную плашечку "Steam Deck Verified".

Читать далее

Как мы Steam Deck Verified получали

Level of difficultyEasy
Reading time4 min
Views3.6K

Это небольшой рассказ о том, как мы получили заветную плашечку Steam Deck Verified для нашей игры The Unexpected Quest. Причем, никто из нас даже в руках не держал этот ваш Steam Deck.

Читать далее

Выбор игрового ИИ и его «сложность»

Level of difficultyMedium
Reading time6 min
Views3.6K

Итак, интернет полон туторами по ИИ во всех возможных вариантах: машина состояний, дерево поведений, GOAP и utility AI. Каждое из которых со своей сути лишь определяет алгоритм, по которому сменяются состояния/действия персонажа.

• Для FSM и BT это простые if else с четкими условиями перехода. “Если видим противника, идем к нему. Если подошли, атакуем”.

• Для GOAP мы находим такой “путь” из действий игрока, который приводит к желаемому результату. Как правило, для выбора “пути” используем поиск в ширину, но при большом количестве действий можно рассмотреть варианты использования алгоритмов-“старших братьев” поиска в ширину. Например, A*.

• В Utility AI мы просто выбираем самое “эффективное” действие каким бы то ни было способом. Это можно делать за счет формул расчета, оценки через кривые Безье или через смесь этих способов.

Читать далее

WordPad всё же удалили из Windows. Просьбы пользователей не помогли, востребованный текстовый редактор стал историей

Reading time4 min
Views9.9K

Корпорация Microsoft довольно давно начала предупреждать о скором удалении WordPad, можно сказать, исторического текстового редактора из комплекта встроенных программ Windows. Появился он без малого 30 лет назад и долгое время пользовался популярностью, поскольку обеспечивал базовые возможности работы с текстом, будучи бесплатным. Но компания посчитала его устаревшим и удалила. Пользователи обращались к Microsoft с просьбой оставить нужную им программу, но на этот раз представители редмондской корпорации не прислушались к их мнению. Подробности — под катом.

Читать далее

Генератор случайных чисел, который можно запустить в голове

Level of difficultyHard
Reading time8 min
Views27K

Люди ужасно плохо справляются с придумыванием случайных чисел. Я хотел научиться быстро генерировать «достаточно случайные» числа. Мне не нужно было что-то совершенное, просто способ придумывания случайных цифр за полминуты. Поискав онлайн, я нашёл старый пост в Usenet, написанный Джорджем Марсалья:

Выберите двухразрядное число, допустим, 23. Оно будет вашим «порождающим значением» (seed).

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

Пример последовательности: 23 –> (2 + 6 * 3) = 20 –> (2 + 6 * 0) = 02 –> 12 –> 13 –> 19 –> 55 –> 35 –> …

Его период будет порядком множителя (6) в группе остатков, простых относительно модуля, 10 (в данном случае 59).

«Случайными цифрами» будет количество единиц двухразрядных чисел, то есть 3,0,2,2,3,9,5,… то есть члены последовательности mod 10.

Больше всего Марсалья известен своим набором тестов diehard-генераторов случайных чисел (RNG), так что он в этом понимает (здесь и далее под RNG я имею в виду генератор псевдослучайных чисел (PRNG)). Мне стало любопытно, почему это работает и как он выбрал 6.

Мы будем писать на Raku, языке для гремлинов. На случай, если вы тоже гремлин, под спойлерами я буду объяснять все странные особенности.
Читать дальше →

Information

Rating
Does not participate
Location
Одесса, Одесская обл., Украина
Date of birth
Registered
Activity