Обновить
37

Пользователь

0,6
Рейтинг
22
Подписчики
Отправить сообщение

Устанавливаем почтовый сервер Addy.io для одноразовых почтовых адресов

Уровень сложностиСредний
Время на прочтение6 мин
Охват и читатели14K

Одноразовые алиасы скрывают основной почтовый ящик и надёжно защищают от спама через включение/отключение алиасов, которые засветились у спамеров.

Оригинальный hosted-сервис Addy.io (AnonAddy) предоставляется как платная услуга. Хотя есть бесплатная версия, но она работает с ограничениями. При этом исходный код сервера открыт, так что его можно установить на VPS и использовать без ограничений — со всеми функциями платной подписки и без ограничений трафика.

Читать далее

Краткий справочник про внимания (self-attention, cross-attention, multi-head attention)

Уровень сложностиСредний
Время на прочтение5 мин
Охват и читатели10K

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

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

Читать далее

Наконец-то нашел Android Service своей мечты после того, как потерял его 13 лет назад

Уровень сложностиСредний
Время на прочтение3 мин
Охват и читатели20K

В этой статье я собираюсь показать вам Android фичу, представленную в 2012 году, и попробую написать для неё UI на Compose.

Изучая недра Android, я наткнулся на один Service, который привлек моё внимание. Класс, который я обнаружил, не только заинтриговал меня своим названием, но и снова удивил интересными возможностями, скрытыми внутри Android.

Узнать подробности

От MNIST к Transformer. Часть 4. Gradient Descent. Обучаем нашу модель

Уровень сложностиСложный
Время на прочтение10 мин
Охват и читатели4.8K

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

Это четвертая статья из цикла От MNIST к Transformer, цель которого пошагово пройти путь от простого CUDA ядра до создания архитектуры Transformer - фундамента современных LLM моделей. Мы не будем использовать готовые высокоуровневые библиотеки. Мы будем разбирать, как все устроено под капотом, и пересобирать их ключевые механизмы своими руками на самом низком уровне. Только так можно по настоящему понять как работают LLM и что за этим стоит. В этой статье мы разберем как работает градиентный спуск, реализуем его и обучим нашу модель для распознования mnist датасета.

Приготовьтесь, будет много кода на C++ и CUDA, работы с памятью и погружения в архитектуру GPU. И конечно же математика что за этим стоит. Поехали!

Читать далее

Нескучное программирование. Обобщения (ч.2)

Уровень сложностиСложный
Время на прочтение26 мин
Охват и читатели9.7K

Это не отдельная статья, а продолжение статьи про теорию объектов в с++, почему объекты в плюсах такие какие есть. Все завершенные главы я также выкладываю на github'e в английском и русском варианте. Продолжаем разбираться в теории С++...

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

Чтобы отразить это в программе, объекты, представляющие конкретные сущности, нуждаются в своём определении идентичности, которая отделена от текущего состояния. Удобный способ ввести такую идентичность будет сделать некий токен идентичности, уникальное значение, которое выражает "кто это", а не "в каком он сейчас состоянии". Таким токеном может быть, например, адрес объекта в памяти, индекс в массиве, или табельный номер сотрудника в кадровой системе и проверяя равенство токенов идентичности, мы фактически проверяем тождественность объектов: один и тот же объект или разные. 

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

Читать далее

Обойдемся без ассемблера

Уровень сложностиСредний
Время на прочтение8 мин
Охват и читатели13K

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

Нет сети. Нет USB. Нет компилятора. Нет интерпретаторов вроде Python. Возможно, даже нет привычных утилит (dd, xxd, objdump, hexdump). Есть только shell и встроенные команды.

Звучит как шутка, пока это не становится реальным сценарием:

Читать далее

Я написал компилятор на C++ при помощи LLVM

Уровень сложностиСредний
Время на прочтение56 мин
Охват и читатели14K

GitHub

Onyx — язык программирования, нацеленный на базовую безопасность памяти, приятный синтаксис и опыт использования. Onyx написан на C++ с компиляцией на базе LLVM. На момент написания статьи язык поддерживает:

Читать далее

Как защитить свой VDS сервер: 53 000 попыток взлома за 5 дней

Уровень сложностиСредний
Время на прочтение23 мин
Охват и читатели66K

Как защитить свой VDS сервер: 53 000 попыток взлома за 5 дней

Представьте себе: вы арендовали скромный VDS, чтобы поэкспериментировать. Ничего грандиозного — пара тестовых сайтов, простенький веб-сервер на nginx, пара скриптов в cron для автоматизации рутины, SSH для удалённого доступа. Обычная песочница для разработчика, никому, казалось бы, не интересная. Сервер тихо живёт своей жизнью где-то в облаке, отдаёт странички, выполняет задачи, ждёт ваших команд. Вы даже не подозреваете, что за этой тишиной уже разворачивается настоящая цифровая охота.

За два года работы в технической поддержке облачного хостинга я видел множество взломов, помогал клиентам с восстановлением серверов. Видел всё: от примитивных майнеров до полностью стёртых проектов без бэкапов. Сейчас я работаю инженером технической поддержки в компании CleverData (входит в холдинг LANSOFT).

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

Читать далее

Почему я не верю в ИИ-агентов в 2025 году, несмотря на то, что сам их разрабатываю

Уровень сложностиПростой
Время на прочтение8 мин
Охват и читатели45K

Команда AI for Devs перевела статью, в которой автор делится прогнозами о будущем ИИ-агентов в 2025 году. Его выводы: несмотря на шумиху, «автономные агенты» столкнутся с экономическими и техническими барьерами. Почему текущий подход к архитектуре агентов не сработает и какие методы действительно приносят результат — читайте в статье.

Читать далее

Пишем на C самоизменяющуюся программу x86_64

Время на прочтение14 мин
Охват и читатели30K


«Зачем вообще писать программу, меняющую код в процессе выполнения? Это же ужасная идея!»


Да, всё так и есть. Но это и хороший опыт. Такое делают только тогда, когда хотят что-то исследовать, или из любопытства.


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


Предупреждение: в этом посте активно используется язык ассемблера x86_64, в котором я ни в коем случае не являюсь специалистом. Для написания статьи мне пришлось изучать приличный объём материалов, и, возможно (почти наверняка), в ней есть ошибки.
Читать дальше →

Любителям x86-64 assembler посвящается: DIY волокна в C++

Уровень сложностиСложный
Время на прочтение26 мин
Охват и читатели28K

Нас ждёт мозговыносящая смесь 64/32-битного ассемблера и старого-доброго C++. Мы сделаем собственную реализацию... Волокон (fibers) без вызова Win API и звонков в службу спасения.

Читать далее

Системные вызовы Linux, которые должен знать каждый разработчик

Уровень сложностиСредний
Время на прочтение7 мин
Охват и читатели39K

Многие разработчики работают в Linux-среде, но не всегда глубоко понимают, как взаимодействие с ОС происходит на низком уровне. На собеседованиях всё чаще спрашивают про системные вызовы Linux. В этой статье мы рассмотрим, какие вызовы встречаются чаще всего и как они работают.

Читать далее

Как я избавляюсь от компьютерной шеи. Часть 2

Уровень сложностиСредний
Время на прочтение6 мин
Охват и читатели11K
В первой части:
  • Откуда появился термин «компьютерная шея»;
  • Профессиональные болячки айтишника, с которыми я обратился к врачам;
  • Дело не в шее. Диагноз и назначение лечения после сдачи анализов и посещения невролога, окулиста, рентгенолога;
  • Варианты самостоятельной профилактики ― приложения, упражнения.

В конце предыдущей части я опубликовал фотографии из зала с качелями Юлина и впечатления от первого посещения.

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

Внимание: это мой личный опыт, и все, что я описываю, выполняю по назначению врачей.

На фотографиях — я до/после посещения тренажерного зала. Даты: 02.12.2024 (слева) и 21.02.2025 (справа). Заметно уменьшился горб и стала длиннее шея.




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

Сборка проектов Си и Си++: от простого к сложному. Часть I. Библиотеки

Уровень сложностиСредний
Время на прочтение12 мин
Охват и читатели58K

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

Вот сегодня и расскажу о том, какие бывают способы борьбы с зависимостями и сборки проекта из множества файлов на Си++. Заодно те, кто не любят Си++, смогут порадоваться «прелестям» этого процесса. И хоть тема очень важная для программистов, но я обратил внимание, что даже многолетний опыт не гарантирует понимания этих процессов. Но сразу предупреждаю — история длинная даже с учетом всех попыток не убегать на смежные темы.
Читать дальше →

ChatGPT против Школьника. Кто справляется с сочинением лучше?

Уровень сложностиПростой
Время на прочтение23 мин
Охват и читатели8.1K

Я программист в крупной IT-компании. На работе использую ChatGPT, с помощью нейросети отлаживаю код и разбираю техническую документацию. 

Моя дочь в этом году сдает ЕГЭ по русскому языку, и я подумал: раз бот хорошо справляется с кодами, почему бы не проверить его на заданиях из экзамена?

Читать далее

Построим GPT: с нуля и шаг за шагом

Уровень сложностиПростой
Время на прочтение11 мин
Охват и читатели42K

В этой статье я построил GPT архитектуру на данных из произведений Шекспира и получил достаточно впечатляющие результаты.

Читать далее

Почему слишком быстрые мыши могут ломать FPS в играх

Уровень сложностиПростой
Время на прочтение8 мин
Охват и читатели39K

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

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

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

Читать далее

Flappy Bird на Си для Android весом APK всего 92 Килобайта

Уровень сложностиПростой
Время на прочтение4 мин
Охват и читатели19K

Это невозможно! И вы будете правы, только ошибка в том, что это — реальность.
Или как сказал один человек «Это компьютерная наука. Ограничений нет. Я могу делать все, что захочу. Это всего лишь биты информации.»

Читать далее

Как написать хороший генератор

Уровень сложностиПростой
Время на прочтение6 мин
Охват и читатели5.8K

В интернете невероятное количество статей о том "как написать свой генератор на С++20", но почти все они сводятся к новичковым хело вордам и почти ни одной статьи о том как написать хороший генератор. Что ж, это нужно исправлять!

next

FUSE: как написать свою файловую систему

Уровень сложностиСложный
Время на прочтение21 мин
Охват и читатели36K

Меня зовут Максим, я ведущий разработчик в VK. Занимаюсь инфраструктурой доставки электронной почты в проекте Mail.ru. Наша команда разработала и довела до эксплуатации файловую систему (ФС) на FUSE в рамках проекта распределённой почтовой очереди. В проекте требовалось реализовать сетевую ФС, которая сохраняет данные в трёх копиях, в разных ЦОДах. Цель — повысить отказоустойчивость, чтобы даже полный выход из строя одного ЦОДа не приводил к нарушениям SLA. Эта статья для всех, кто интересуется файловыми системами и хранением данных. Мы обсудим:

- зачем писать свою ФС;

- как написать свою ФС с помощью фреймворка FUSE;

- какие подводные камни есть у эксплуатации FUSE в production.

Эта статья — результат трёх лет разработки ФС. Сейчас самое время заварить чай, рассказ будет долгим. 

Заварить чай и читать
1
23 ...

Информация

В рейтинге
2 539-й
Зарегистрирован
Активность