Обновить
39

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

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

Как за один вечер разгрести 36 000 фотографий и почту с 2005 года, руками AI-агента и локальных моделей

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

Есть задачи, которые не делаются никогда. Не потому что сложные, а потому что объём убивает любое намерение на втором часу. У меня такой задачей был фотоархив: около 36 000 фото и видео, 222 ГБ, копившиеся 20 лет и размазанные вообще везде. Время пришло :)

Читать далее

У Microsoft не было целостной концепции GUI со времён Петцольда

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

Несколько лет назад я присутствовал на встрече разработчиков, где один из участников задал, казалось бы, простой вопрос: «А какой фреймворк выбрать для написания десктопного приложения под Windows?»

Воцарилась мёртвая тишина. Спустя какое-то время, кто-то предложил WPF. Ещё один человек назвал WinUI 3. Третий упомянул Electron. В итоге беседа ушла в сторону, и ответ на поставленный вопрос так и не был дан.

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

Если вы в течение десяти секунд не можете ответить на вопрос «Какой подход будет оптимальным для разработки UI на платформе X?», значит, эта платформа сильно заплутала на своём пути. Пора тормозить.

Читать далее

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

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

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

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

Читать далее

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

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

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

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

Читать далее

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

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

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

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

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

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

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

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

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

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

Читать далее

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

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

Это не отдельная статья, а продолжение статьи про теорию объектов в с++, почему объекты в плюсах такие какие есть. Все завершенные главы я также выкладываю на 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 мин
Охват и читатели72K

Как защитить свой 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 мин
Охват и читатели40K

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

Читать далее

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

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

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

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

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

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




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

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

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

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

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

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

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

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

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

Читать далее

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

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

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

Читать далее

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

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

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

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

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

Читать далее

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

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

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

Читать далее
1
23 ...

Информация

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