Обновить

Разработка

Сначала показывать
Порог рейтинга
Уровень сложности

Админим Linux-сервер через Cursor AI

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

Чем заняться в праздники, как не интересными экспериментами. На днях у меня случилась спонтанная покупка аренда зарубежного сервера. Пока еще могу себе позволить потратить несколько сотен рублей на такое. :-)

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

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

Но маразм крепчал. Причем со всех сторон. Дело даже вообще не в спорном политическом контенте. К примеру, из РФ уже нельзя почитать форумы FreeCAD и LightBurn, которые частенько нужны для моей хоббийной движухи...

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

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

Infrastructure as Code! 🚀

Украсили ASCII-елочку. Как прошел Т-Адвент

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

Хабр, привет! На связи разработчик направления Digital Interview в Т-Банке Анжела Большакова. Совсем недавно мы выпустили статью о нашей внешней платформе для проведения собеседований — Enterly, а теперь расскажем об онлайн-активности, которую мы провели на ней.

Декабрь — сезон адвентов на любой вкус и цвет. Вот и мы решили сделать свой, с ИТ-задачами и призами. Правила простые: в определенные даты мы открывали и присылали в телеграм-канал «Код Желтый» ссылки, по которым нужно было решить задачку на написание кода. Решения принимались на любом из 16 языков программирования — от JavaScript и Python до Kotlin и Go. Под конец года уже не хотелось обычных задач по программированию, поэтому взяли шуточные, на находчивость. Рассказываем, о чем просили участников и какие интересные решения увидели.

Читать далее

Сам себе VoLTE. Запускаем сотовую сеть 4G LTE с поддержкой звонков и SMS

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

Приветствую всех!

Два года назад я уже рассказывал о том, как запустить у себя дома базовую станцию 4G LTE. Тем не менее, в той сети работал только мобильный интернет, тогда как при попытке позвонить или отправить SMS связь немедленно обрывалась.

Самое время восполнить это упущение. Сегодня мы поднимем сеть, в которой будут работать все эти функции. Заодно разберёмся, как работают звонки в LTE-сетях, как запустить такую сеть при помощи SDR и как заставить это всё работать. Как водится, будет много интересного.

Open5GS

Когда ИИ не понимает бизнес-контексты

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

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

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

Читать далее

Фитнес в VR? Добавляем свою музыку в BeatSaber

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

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

Игра Beat Saber — это впечатляющий источник домашней физической нагрузки под музыку. В этой статье разберем, как играть на треках из пользовательской библиотеки, и попытаемся создать свою карту c любимой музыкой. Спойлер: инструменты не так страшны.

Отработать салатики

Если ты делаешь книгу в LaTeX, то ты обязательно должен знать эти фишки. часть 3/4

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

Меня зовут Виталий и я пишу уже который год самую большую книгу по математике для 4 11 классов, а так же автор поста (рекомендую почитать) о ней. Пишу я ее в LaTeX и считаю, что современный учебник не должен быть черно-белым, а так же должен быть удобен для использования и учеником и учителем. Здесь я собрал базовые фишки, которые я использую (что-то чаще, что-то реже). Надеюсь, вы найдете что-нибудь полезное для себя:)

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

Первая часть тут, вторая часть тут

Читать далее

Структуры данных на практике. Глава 1: Разрыв в производительности

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

Часть I: Основы

«В теории теория и практика одинаковы. На практике это не так». — авторство приписывается разными специалистам по computer science

Загадка

Два часа утра. Я смотрю на совершенно нелогичные данные профилирования.

В процессе работы над загрузчиком для SoC RISC-V у нас возникла проблема с производительностью. Загрузчик должен был искать конфигурации устройств в таблице: примерно пятьсот элементов, каждый с 32-битным ID устройства и указателем на данные конфигурации. Всё просто.

Мой коллега реализовал эту систему с помощью хэш-таблицы. «Поиск за O(1), — сказал он уверенно, — лучше уже некуда».

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

Я попробовал использовать очевидную оптимизацию: заменить хэш-таблицу двоичным поиском по отсортированному массиву. Двоичный поиск занимает O(log n), что теоретически хуже, чем O(1). Так написано в учебниках. Мой преподаватель алгоритмов был бы разочарован.

Но в результате загрузчик оказался на 40% быстрее.

Как O(log n) смогло победить O(1)? Что происходит?

Читать далее

Сколько нужно парадигм, чтобы вкрутить лампочку?

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

Разработчик, знающий только одну парадигму программирования, напоминает плотника, у которого в ящике с инструментами лежит один-единственный молоток. Конечно, молотком можно идеально забить гвоздь. Или шуруп, если приложить достаточно рвения. Но попробуйте этим молотком распилить или отшлифовать доску — и сразу станет ясно, — при условии, что вам доводилось видеть в жизни пилу или рубанок, — что инструмент выбран неудачно. Так и с парадигмами: знание только императивного программирования или только объектно-ориентированного подхода превращает разработчика в механического исполнителя задач, неспособного увидеть элегантное решение там, где оно лежит на поверхности.

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

Я список парадигм прочёл до середины

Нас окружают «невозможные» кубики Рубика

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

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

Крутить далее...

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

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

802.1x и двери по картам — это должно быть надёжно. Пентестер зашёл в банк ночью, «обманул» ИК-датчик баллончиком, стал принтером в сети и нашёл заполненные чеки. Это не теория. Это отчёт по реальному тесту на проникновение.

Читать далее

Достаточно надёжный и научно обоснованный алгоритм проверки текста на LLM

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

Кажется, я изобрёл алгоритм, при помощи которого можно достаточно надёжно отличить авторский текст от LLM‑текста.
Помимо надёжности, алгоритм очень нетребователен к вычислительным ресурсам и способен эффективно работать даже на 8‑битных микроконтроллерах в связке с W5100.

Суть его в следующем. Ваше вычислительное устройство открывает web‑страницу и ищет на ней четырёхзначные числа. Если таких чисел нет или если на странице попадается хотя бы одно число, большее чем 2023, такая web‑страница с вероятностью 50% LLM‑сгенерирована.
Если же все найденные четырёхзначные числа меньше, либо равны 2022, то вероятность AI‑генерации данной страницы равна 1%.

Ниже я расскажу, как мне пришла в голову идея столь простого, но в тоже время эффективного алгоритма.

распознать LLM с первого взгляда

Карьерный потолок в IT: почему я перестал стремиться в менеджмент и начал делать свой продукт

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

Каждый разработчик в начале пути видит перед собой ясную лестницу: Junior → Middle → Senior. Рост компетенций сопровождается ощутимым ростом зарплаты, и это даёт мощный заряд мотивации. Но что происходит, когда вы достигаете уровня Senior? Зарплата упирается в «стеклянный потолок», задачи становятся однотипными, а привычный драйв исчезает.

Читать далее

Нескучное программирование.История концептов

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

История концептов в C++ – один из самых показательных примеров того, как язык развивается не линейно, а через десятилетия экспериментов, откатов и переосмыслений. Первые идеи, которые мы сегодня называем концептами, появились ещё в конце 1990-х, когда стало очевидно, что шаблоны C++ имеют колоссальную выразительность, но практически не дают средств для описания намерений программиста. Шаблон можно было инстанцировать почти с любым типом, но ошибка проявлялась либо в виде километров сообщений компилятора, либо в виде неожиданного поведения в рантайме. Уже тогда Страуструп сформулировал проблему как «отсутствие контрактов для шаблонов», когда программист знает, что от типа требуется оператор + или ==, но язык этого не выражает.

Ранние предложения концептов были чрезвычайно амбициозными и стремились описывать не только синтаксис, но и семантику. Например, концепт EqualityComparable должен был означать не просто наличие operator==, но и выполнение математических свойств эквивалентности: рефлексивности, симметричности и транзитивности. Аналогично, концепты для упорядоченных типов предполагали строгую слабую упорядоченность, а для итераторов корректное поведение при многократном проходе. Это отражало академический взгляд на обобщённое программирование, сильно вдохновленный функциональными языками и работами Степанова.

Читать далее

Ближайшие события

Счастливые автобусные билетики — магия чисел для советских школьников

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

В детстве каждое лето я проводил на даче. Из Ленинграда до дачи мы добирались на пригородном автобусе. Особой удачей я считал занять место напротив кассы и смотреть на то, как люди покупают себе билеты. Но не с целью контроля, а с целью наблюдения за самим процессом. И за билетами.

Очень меня интересовали эти самые билетики! Я их коллекционировал. На даче у меня был специальный дерматиновый красивый полупрозрачный конверт (от старых фломастеров), в котором я хранил все свои билеты. Номера автобусных билетов состояли из шести цифр, и я отдельно выделял те, у которых сумма первых трёх цифр была равна сумме трёх последних. Конечно, самыми ценными были бы те билеты, у которых все цифры одинаковые...

Читать далее

Очень странные дела или подключаем YDB в AWS NoSQL Workbench

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

При работе с Yandex Database (YDB) часто возникает потребность в удобном визуальном инструменте для работы с данными. AWS NoSQL Workbench — популярное приложение для моделирования и тестирования NoSQL баз можно использовать и с YDB благодаря DynamoDB-совместимому Document API.

Читать далее

Легкий способ развить свой TG-Канал. Как развивать личный бренд и зачем он IT-шнику?

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

Девять месяцев назад я начал вести свой канал t.me/siliconchannel. Писал статьи для Хабра на свою профессиональную тему - Go-разработку - и задумался: а могут ли эти статьи и вложенный в них труд приносить кратно больше пользы и мне, и Хабру? В итоге это привело к блогу на 4000 подписчиков с 0 рублей вложений.

Читать далее

Изнанка бэкапов YDB: что остаётся за кадром

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

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

Читать далее

Kawai-Focus 2.1: переезд на новый стек

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

В данной статье я попытаюсь переписать часть приложения Kawai-Focus на стек: FastAPI + Vue.js + Tauri + Ionic. Также я соберу приложение только с экраном «Таймеры» под Linux в AppImage, которое подойдёт для большинства Linux-дистрибутивов. Реализация одного экрана не будет слишком долгим процессом, а финальная сборка приложения позволит оценить сложность и удобство полного цикла разработки.

Эта cтатья не будет подробным гайдом, так как размер переписанного кода и его описание слишком велики для одной статьи. Однако я покажу часть кода проекта и расскажу о выбранном стеке, а также о трудностях и преимуществах, с которыми я столкнулся в процессе переписывания проекта. Я буду использовать часть кода старого проекта, который не касается Kivy и KivyMD, поэтому его душа не умрёт, а обновится.

Заваривайте чай, доставайте вкусняшки — пора «старый стек превращать в удобрение для новых помидор»! 🍅

Читать далее

Паттерн Newtype и Deref-coercion в Rust

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

Как отличить строку «имя» от строки «e-mail»? К примеру, чтобы не ошибиться в передаче в функцию. На помощь приходит паттерн Newtype, но его не очень удобно использовать. В статье разберем как добавить удобства.

Читать далее

JavaScript: заметка об Anchor Positioning API

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

Привет, друзья!

В этой небольшой статье мы вместе с вами немного пощупаем новый Web API - Anchor Positioning.

Anchor Positioning API предоставляет новые возможности для связывания элементов между собой. Одни элементы являются якорями (якорными, anchor elements), другие - позиционируемыми относительно якорей (закрепленными, anchor-positioned elements). Размер и положение позиционируемого элемента может определяться размером и положением якорного элемента.

Кроме того, с помощью CSS можно:

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

определять условия видимости закрепленного элемента, например, скрывать такой элемент при выходе за пределы экрана

На сегодняшний день этот API поддерживается всеми основными браузерами (в Safari пока только в качестве экспериментальной возможности).

Читать далее