Search
Write a publication
Pull to refresh
1
0
Send message

Как сгенерировать порождающие полиномы для конечных полей

Level of difficultyEasy
Reading time12 min
Views4.1K

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

Читать далее

Ассемблер для программистов на языках высокого уровня: Hello World

Level of difficultyMedium
Reading time6 min
Views35K

Если вы начинали изучение программирования с JavaScript, Rust, C или любого другого высокоуровневого языка, то ассемблерный код может показаться вам непонятным или даже пугающим.

Рассмотрим следующий код:

section .data
  msg db "Hello, World!"

section .text
  global _start

_start:
  mov rax, 1
  mov rdi, 1
  mov rsi, msg
  mov rdx, 13
  syscall

  mov rax, 60
  mov rdi, 0
  syscall

К счастью, по второй строке мы можем понять, что он делает.

Здесь нет ничего привычного нам: мы не видим ни условных операторов, ни циклов, нет никакого способа создавать функции… Да даже у переменных нет имён!

С чего же вообще начать?

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

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

Компьютерное зрение и котики. Или алгоритмы против человека

Level of difficultyMedium
Reading time16 min
Views5.1K

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

Читать далее

Насколько нейросеть — хороший калькулятор?

Level of difficultyEasy
Reading time1 min
Views6K

Насколько опасно умножать числа с помощью ChatGPT и OpenAI o1-preview, насколько можно доверять вычисленным ей константам? Стоит ли тратить деньги на o1-preview, если есть mini (в контексте умножения чисел)? Мини-исследование под катом.

Читать далее

Системный аналитик. Краткий гайд по профессии. Часть 3. Архитектура приложений и их масштабирование

Level of difficultyMedium
Reading time17 min
Views26K

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

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

Читать далее

Обход SSH Keystroke Obfuscation

Level of difficultyMedium
Reading time10 min
Views4.7K

В OpenSSH версии 9.5 были добавлены меры предотвращения keystroke timing‑атаки за счет анализа трафика. Патч включал добавление обфускации таймингов нажатий клавиш в клиенте SSH. Согласно информации о релизе, эта функция «пытается скрыть тайминги между нажатиями за счет отправки трафика взаимодействия через фиксированные интервалы времени (по умолчанию — 20 мс), когда отправляется малое количество данных». Также отправляются фейковые chaff‑пакеты после последнего нажатия, что значительно усложняет анализ трафика, скрывая реальные нажатия среди потока искусственных пакетов. Эта функция может настраиваться с помощью опции ObscureKeystrokeTiming в конфигурации SSH.

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

Читать далее

Создание инструмента генерации кода с помощью Rust и локальных LLM от Ollama

Level of difficultyMedium
Reading time4 min
Views4.6K

Это реакция на выпуск ChatGPT o-preview. Попытка добавить логику в LLM с открытым исходным кодом, которые можно запустить дома на скромном GPU или даже на CPU

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

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

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

Первый шаг — получить объяснение от пользователя:

Читать далее

Корпоративный OpenVPN, или как сделать тигра из кошки

Reading time16 min
Views9.8K

Говорят, из кошки не сделать тигра, но сегодня мы попробуем добавить «корпоративности» очень простому и популярному ВПН-решению. OpenVPN Community Edition является решением с открытым кодом, очень популярным в мире и довольно безопасным. В корпоративной среде его использование часто бывает проблематично – отсутствуют важные функции, позволяющие разворачивать решение большому количеству пользователей с минимальными затратами.

Читать далее

Программирование на C в Linux на примере создания командной оболочки: часть 2

Level of difficultyMedium
Reading time55 min
Views10K

Я решил недавно улучшить свой навык владения C, путем написания проектов. Самая первая мысль, которая пришла мне на ум — это командный интерпретатор, командная оболочка, shell проще говоря. А также я расскажу о системе сборки make, и о том, как правильно писать и документировать C-код.

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

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

Читать далее

Как победить вампира-социопата, не приходя в сознание, или Еще раз о современной научной фантастике

Level of difficultyEasy
Reading time10 min
Views7.4K

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

Читать далее

«Жизни не существует»: обманчиво сложная задача определения жизни

Level of difficultyEasy
Reading time6 min
Views8.2K

Задумывались ли вы когда-нибудь о том, что делает вас живым? Что делает живым хоть что-то?

В 2012 году на заседании Американского химического общества, посвящённом происхождению жизни, Эндрю Эллингтон предложил радикальную теорию: «Жизни не существует». Энди — профессор химии из Техасского университета в Остине, и это был первый слайд его презентации о химии РНК и происхождении жизни. Его идея оставила меня в невероятном недоумении.

Я была озадачена, потому что, наверное, должна была бы согласиться с Энди. Но я не согласилась. Когда я присутствовала на лекции Энди, я была абсолютно уверена, что жива, как уверена и сейчас. Вы, вероятно, тоже уверены, что живы. Разве вы не прожили всю свою жизнь, живя? Быть живым — это важно. Это очень отличается от того, чтобы не быть живым.

Читать далее

Изготовление лампы с цоколем упрощённого типа

Level of difficultyMedium
Reading time7 min
Views8.7K

Речь идёт об опытах и экспериментах на пути к изготовлению более или менее практических электровакуумных приборов (ЭВП) в домашней лаборатории-мастерской. Стоит сказать: выводы ЭВП — спай разнородных материалов, сложное и ответственное место любой лампы. Говоря о конструкции, классическая гребешковая ножка [1] покрывает все любительские потребности, однако её изготовление, тем более из легкоплавкого стекла платиновой группы, склонного к растрескиванию из-за высокого температурного коэффициента расширения (ТКР) — многостадийный процесс, имеющий несколько длительных промежуточных отжигов. Что удлиняет и удорожает изготовление. Однако ряд приборов можно сделать с упрощённым цоколем и проволочными выводами, быстрее, удобнее, дешевле.
Читать дальше →

100 cамых ценных репозиториев GitHub [по версии алгоритма UOS]

Reading time10 min
Views46K
Привет, Хабр! Представляю вашему вниманию подборку — перевод статьи из Hackernoon «GitHub’s Top 100 Most Valuable Repositories Out of 96 Million». А саму статью написали ребята, которые использовали алгоритм U°OS Network, чтобы выявить самые ценные оупесорсные проекты на Github.

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

Я вышел на рынок с оборотом 2 млрд ₽ — и вот почему меня до сих пор не слушают

Level of difficultyEasy
Reading time8 min
Views7.3K

Вы знаете, как работают лыжи? По какой причине лыжа не проваливается в сугробе, когда ботинок проваливается?

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

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

Читать далее

Темная магия IF,AND,OR [DAX]

Reading time2 min
Views1.4K

В самом сердце тайных рун DAX, где строки данных сливаются с мраком неведомого, скрывается мощь заклинания, известного как IF().
Оно – орудие избранных, тех, кто способен узреть истину в данных и принять верные решения среди зыбких теней. Но, как и всякая магия, оно требует чётких условий, ведь одно неверное слово – и результат будет иным, чем ты ожидал…

Заклинание IF():

IF(<условие>, <результат_если_истинно>, <результат_если_ложно>)

Когда избранный произносит это заклинание, оно проверяет условие. Если условие истинно, с тёмных небес нисходит первый результат. Но если оно ложно, из глубин бездны всплывает иной исход.

IF(‘Sales’[TotalSales] > 5000, "Большая скидка", "Маленькая скидка")

Здесь IF() взыскивает по таблице продаж. Если продано больше чем на 5000 золотых монет, заклинание вознаграждает "Большой скидкой". В противном случае довольствуйся "Маленькой скидкой".

Заклинание AND():

Но иногда простое условие не может удержать силу заклинания. Тогда на помощь приходит союз тёмных условий – AND(). Это древняя связь, соединяющая два и более условий в единое мощное заклятие.

AND(<условие1>, <условие2>)

AND() требует истинности всех условий, иначе заклятие разрушится.

IF(AND(‘Sales’[TotalSales] > 5000, ‘Sales’[Profit] > 1000), "Высокая производительность", "Низкая производительность")

Если и продаж больше 5000, и прибыль больше 1000, заклинание приносит "Высокую производительность". Но если одно из условий не выполнено, результатом станет "Низкая производительность". Ибо один слабый элемент – и магия не состоится.

Развернуть свиотк

Теорема о разбиении регрессоров: делаем CUPED аб-тесты в один шаг

Level of difficultyMedium
Reading time8 min
Views1.2K

Пишу эту статью для тех, кто уже знаком с CUPED, но ищет больше понимания этого метода и взгляда на него с другой стороны. Здесь я не буду детально объяснять базовый алгоритм CUPED аб-тестирования: про это уже достаточно материала в сети. Основное внимание уделим рассмотрению метода через призму регрессий. Цель статьи - познакомить читателя с теоремой, безумно полезной для понимания работы регрессий, а главное - продемонстрировать, как с помощью этой теоремы проводить CUPED тесты не в три последовательных шага (как в базовом алгоритме), а с помощью одной регрессии.

Читать далее

Сказки цифрового города: часть первая — Пакетик TCP

Level of difficultyEasy
Reading time2 min
Views3K

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

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

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

Пакетик начал свое путешествие с установления соединения. Он постучал в дверь Серверины, отправив специальный сигнал, называемый SYN (синхронизация). Серверина ответила ему сигналом SYN-ACK, подтверждая, что она готова к диалогу и добавила свой собственный сигнал подтверждения (ACK).

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

Пакетик, заметив, что его подтверждения не приходят вовремя, начал использовать использовал таймауты, о которых ему рассказал волшебник Конфигур (sysctl), настроенные в соответствии с параметрами sysctl.conf (net.ipv4.tcp_retries2 для
количества попыток передачи данных перед считыванием пакета потерянным и net.ipv4.tcp_syn_retries для количества повторных SYN-пакетов). Каждый раз, когда таймаут истекал без получения подтверждения от Серверины, Пакетик повторно отправлял данные, убеждаясь, что каждый бит информации будет доставлен.

Читать далее

Психовизуализация как новое направление в изучении психической деятельности: нарративный обзор

Level of difficultyHard
Reading time22 min
Views787

Богданов Я.В.

ГБУЗ Кузбасская клиническая психиатрическая больница, Кемерово, Россия

Резюме.

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

Читать далее

Как получить радиолюбительский позывной в 2024 году

Level of difficultyEasy
Reading time7 min
Views40K

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

Читать далее

Гайд по психопатам с научным подходом

Reading time6 min
Views13K

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

Читать далее

Information

Rating
Does not participate
Registered
Activity