Вспомнил, как реализовывал кольцевой буфер, чтобы гонять данные из ядра в юзерспейс.
Тоже один писатель, один читатель. Загвоздка была в том, что данные были строками разного размера, что сильно усложняло их обработку - из-за требования по производительности нужно было zero-copy, то есть парсить эти строки прямо на месте, в кольцевом буфере, и вот на краю буфера парсеру надо было перескакивать в начало буфера, как-то склеивать элемент с копированием в отдельный буфер. В общем долго, некрасиво.
В итоге все решил очень просто - замапил этот буфер и в ядре, и в юзерспейсе дважды подряд в памяти. В результате продолжение строки на границе буфера просто читалось в начале второй мапы, как будто никакой границы нет.
На C++, например. Дело только не в "на чем программировать", а "что разрабатывать". У меня, например, на рабочем ноуте крутятся тестовые ВМки с тяжелыми серверами облачных хранилищ. Иногда и 64 Гб бывает маловато.
Я системщик. Ядро, виртуализация, хайлоад - вот это все. ИИ офигенный инструмент, хорошо помогающий даже в сложных задачах. Этакий джун, которому можно отдать всю рутину. Очень много знающий джун, очень старательный, фантастически быстрый, но за ним глаз да глаз нужен. Естественно, тщательные ревью и полное понимание сгенерированного кода. И все равно это в разы быстрее ручной разработки.
При этом остается немало пространства покодить самому - и это наиболее интересные части проекта.
Вот я заказчик. Мне, допустим, нужен сервис выдающий пользователям котиков. Пишу исполнителю: сделай мне сервис, выдающий пользователям котиков по запросу. Через некоторое время он мне приносит сервис, выдающий на 24124 порту при подключении слово "cat" в ответе. Сделал? Сделал. Соответствует запросу? Соответствует.
А можно написать ИИ "Напиши design document для сервиса, выдающего пользователям котиков по запросу." и получить:
Design Document: Cat Delivery Service (CDS)
1. Обзор
Cat Delivery Service (CDS) — это API-сервис, который возвращает пользователю случайного или отфильтрованного котика (изображение + метаданные) по запросу.
Цель: обеспечить быстрый, масштабируемый и надёжный доступ к “cat content” для приложений, сайтов и ботов.
Дальше уже можно пройти по всему документу и поправить, что нужно. Или попросить ИИ переписать какие-то части.
То же самое с другой стороны. Пришел такой техдок, скормил ИИ, попросил кратко описать, и видишь:
Нужно спроектировать высоконагруженный API-сервис Cat Delivery Service, который по запросу отдаёт изображения котиков с метаданными — случайных или отфильтрованных по породе, возрасту и тегам, а также поддерживает пагинацию и загрузку новых данных через админ-API.
Ты за несколько секунд понимаешь общую задачу, не погружаясь в детали.
А еще это более, чем в два раза, большая мощность передатчиков при прочих равных (сигнал затухает пропорционально квадрату расстояния), больший пинг и большее количество абонентов, трафик которых будет проходить через один аппарат.
Что-то хрень какая-то. Дофига жилья до 5000 находится в СФ.
Вот, например, 200 квадратов за 3600 в месяц - https://www.apartments.com/28-twin-peaks-blvd-san-francisco-ca-unit-a/26jz0s9/
То же самое:
$ g++ -std=c++20 a.cpp && ./a.out
18446744073709551603
Вспомнил, как реализовывал кольцевой буфер, чтобы гонять данные из ядра в юзерспейс.
Тоже один писатель, один читатель. Загвоздка была в том, что данные были строками разного размера, что сильно усложняло их обработку - из-за требования по производительности нужно было zero-copy, то есть парсить эти строки прямо на месте, в кольцевом буфере, и вот на краю буфера парсеру надо было перескакивать в начало буфера, как-то склеивать элемент с копированием в отдельный буфер. В общем долго, некрасиво.
В итоге все решил очень просто - замапил этот буфер и в ядре, и в юзерспейсе дважды подряд в памяти. В результате продолжение строки на границе буфера просто читалось в начале второй мапы, как будто никакой границы нет.
Вот тут совсем не понял. std::string_view просто сохранит указатель и длину строки.
std::string_view s = {"abc", 666666666};printf("%lu\n", s.size());output: 666666666
А ведь, кстати, да. Сделал мемчик с помощью ИИ, и тебе ко всяким "оскорблениям" и "фейкам" добавят отягчающее.
Ну вот, а выше про какую-то квалификацию сварщиков на уровне синьоров затирали. Тут не выше джуна варил.
Ваша?
Довести до абсурда можно все, что угодно.
Чувак постоянно велосипедит и думает, что все вокруг делают то же самое.
За 20+ лет работы нигде такого не видел, всегда начинают с поиска подходящей либы и делают свой велосипед, только если ничего подходящего не нашлось.
На C++, например. Дело только не в "на чем программировать", а "что разрабатывать". У меня, например, на рабочем ноуте крутятся тестовые ВМки с тяжелыми серверами облачных хранилищ. Иногда и 64 Гб бывает маловато.
Кстати, можно юзать подписку Клода:
result =subprocess.run(["claude", "-p", question,"--model", MODEL,"--append-system-prompt", SYSTEM],capture_output=True, text=True, )Что-то похожее было, только я еще проходил через Gentoo с настройкой ядра, компиляцией всего.
Мне кажется, все объясняется гораздо проще: сначала ты играешь с компьютером, потом тебе надоедает.
Да, я просто ps -A сделал, в конце видно два процесса.
Очень просто же.
Запускаем, смотрим дочерний процесс:
Не понимаю хейта ИИшек.
Я системщик. Ядро, виртуализация, хайлоад - вот это все. ИИ офигенный инструмент, хорошо помогающий даже в сложных задачах. Этакий джун, которому можно отдать всю рутину. Очень много знающий джун, очень старательный, фантастически быстрый, но за ним глаз да глаз нужен. Естественно, тщательные ревью и полное понимание сгенерированного кода. И все равно это в разы быстрее ручной разработки.
При этом остается немало пространства покодить самому - и это наиболее интересные части проекта.
Пффф... У нас таких в школе половина была. Из них половина даже не пытались улыбку натягивать - вполне открыто ненавидели детей.
Первые две инициативы, набравшие 100 000 голосов, даже до думы не дошли - были отклонены "экспертной группой".
Зато была принята инициатива, набравшая 2 голоса.
Ну-ну.
Вот я заказчик. Мне, допустим, нужен сервис выдающий пользователям котиков.
Пишу исполнителю: сделай мне сервис, выдающий пользователям котиков по запросу.
Через некоторое время он мне приносит сервис, выдающий на 24124 порту при подключении слово "cat" в ответе.
Сделал? Сделал. Соответствует запросу? Соответствует.
А можно написать ИИ "Напиши design document для сервиса, выдающего пользователям котиков по запросу." и получить:
Design Document: Cat Delivery Service (CDS)
1. Обзор
Cat Delivery Service (CDS) — это API-сервис, который возвращает пользователю случайного или отфильтрованного котика (изображение + метаданные) по запросу.
Цель: обеспечить быстрый, масштабируемый и надёжный доступ к “cat content” для приложений, сайтов и ботов.
2. Функциональные требования
Сервис должен:
Возвращать случайного котика
Поддерживать фильтрацию:
порода (breed)
настроение (cute, sleepy, angry и т.д.)
возраст (kitten / adult)
Поддерживать пагинацию (листинг котиков)
Позволять загружать новых котиков (admin/API)
Поддерживать rate limiting
Полная версия
Дальше уже можно пройти по всему документу и поправить, что нужно. Или попросить ИИ переписать какие-то части.
То же самое с другой стороны. Пришел такой техдок, скормил ИИ, попросил кратко описать, и видишь:
Ты за несколько секунд понимаешь общую задачу, не погружаясь в детали.
И что в этом плохого?
Напомнило статьи из серии Макаронный монст Илона Маска. Там тоже очень "убедительно" доказывалось, что Фэлкон-9 сплошной обман и никак может работать.
А еще это более, чем в два раза, большая мощность передатчиков при прочих равных (сигнал затухает пропорционально квадрату расстояния), больший пинг и большее количество абонентов, трафик которых будет проходить через один аппарат.