Как стать автором
Обновить
153.25

Ненормальное программирование *

Извращения с кодом

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

Как передать информацию в ICMP-пакетах и не привлечь внимания санитаров

Время на прочтение8 мин
Количество просмотров13K

Источник: polymerh.

На Хабре достаточно статей про передачу данных через протокол ICMP. Чего говорить, шесть лет назад я сам писал про стеганографию в IP-пакетах и «пингах». Но кажется, самое время вернуться к этой теме и предложить неочевидные методы.

Если вам кажется, что тема передачи данных в ICMP уже исчерпана и я не смогу вас удивить, то предлагаю извлечь данные из дампа сетевого трафика до прочтения статьи. То, что будет дальше, может ввести в недоумение.
Читать дальше →
Всего голосов 74: ↑85 и ↓-11+96
Комментарии15

Новости

Рисуем рабочий процессор в Paint и запускаем на нём ОС | Ритуал по призыву демона Тьюринга

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


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

Термос этот он нашёл на улице и хотел перепрошить его маленький и беззащитный Cortex-M0+.
Человек бредил. Раз в пару минут его глаза загорались и он издавал душераздирающий крик: «Если что-то существует, то на этом можно запустить Doom!».

Но действительно ли это так? И что вообще значит «запустить»?

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


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

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

Ну а если вы всё ещё здесь — добро пожаловать под кат.
Читать дальше →
Всего голосов 58: ↑67.5 и ↓-9.5+77
Комментарии16

Возможное решение проблемы ссылок в языках программирования

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


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


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


Тем не менее, ссылки в той или иной форме поддерживаются во всех языках программирования, хотя под этим термином часто подразумеваются не полностью эквивалентные термины. Например, под словом "ссылка" можно понимать ссылку как адрес в памяти (как в С++) и ссылку, как указатель на объект (как в Python или Java).


Хотя встречаются языки программирования, которые пытаются решать данные проблемы за счет концепции "владения" (Rust, Аргентум или NewLang). О возможном решении этих и других имеющихся проблем со ссылками далее и пойдет речь.

Читать дальше →
Всего голосов 5: ↑6 и ↓-1+7
Комментарии103

Сказ о том, как РП репликацию на Марии из зеркал состряпал…

Уровень сложностиПростой
Время на прочтение9 мин
Количество просмотров672


Нежданно ни гадано, затеяли значит высшие "итишные" силы включить новые заморские очереди Кафка в уже выполненный на 4/3 проект и слава богу, что только для внешних взаимодействий и передачи всякой информации туды-сюды. Главный архитектор дал благословение и понеслось, да не туда, так как нести то некому это невиданное заморское чудо. Что делать, в обозримые сроки не впихнуть и перед боярами чин и обязательства не сдержать. Посидел РП, погоревал, да сдул пыль со знаний древних и ранее опробованных и тут понеслось.

Читать далее
Всего голосов 3: ↑4 и ↓-1+5
Комментарии0

Истории

Использовать LLM в оффлайне — LocalAI, Ollama, Flowise

Уровень сложностиПростой
Время на прочтение5 мин
Количество просмотров4.2K

Привет, Хабр.

В этой статье о том, как без написания кода поставить себе локально и использовать LLM без подключения к сети. Для меня это удобный способ использования в самолёте или in the middle of nowhere. Заранее выгрузив себе нужные файлы, можно делать анализ бесед саппорта с клиентами, или получить саммарайз отзывов из стора на приложение, или оценить резюме/тестовое задание кандидата...

Читать далее
Всего голосов 8: ↑7 и ↓1+6
Комментарии5

Теперь я адепт Глубины, но денежный вопрос все ещё актуален

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

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

Читать далее
Всего голосов 20: ↑14.5 и ↓5.5+9
Комментарии4

Развертываем peer-to-peer чат с голосом, видео, шарингом экрана, файлов и паролем

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

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

Что будет ниже:

Поиск open source решения для общения голосом, шаринга экрана, включения видео и чатов в режиме peer-to-peer, без лишних бекендов
Запуск этого решения в открытую в github pages
Заворачивание этого решения на приватный сервер
Простенькое закрытие доступа туды через basic http auth
Заключение с описанием некоторых замечаний и потенцевальных возможностей

Читать далее
Всего голосов 29: ↑28 и ↓1+27
Комментарии13

KatWalk C2: ч.5: Учимся разбирать ARM в Ghidra (aka оверклокинг и багфиксинг)

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

"Что б они ни делали -- не идут дела. Видимо в прошивке багов дофига". Как я напомнил в прошлой статье (где я подготовил утилиты для перепрошивки сенсоров) -- я рассказываю про платформу для VR игр, как с ней интегрироваться и как добраться до ее сенсоров напрямую.

Её исходный ресивер обновляет сенсоры с частотой в 86Гц, тогда как технически возможно разогнать до 133 Гц, получив ощутимо ниже задержки, но связь была нестабильной.

Давайте начнём погружение в сенсоры -- посмотрим, что за игра ghidra_11.0_PUBLIC установлена у меня в C:\Games, заглянем одним глазком в саму прошивку и поковыряемся там грязными патчиками, да исправим race condition плюс выкинем немного отладочных глюков. В общем, готовимся к погружению. В этот раз -- всё серьёзно.

Ныряем
Всего голосов 8: ↑8.5 и ↓-0.5+9
Комментарии2

Сам себе экосистема. Часть 4: как я реализовал клиент Telegram на Android-смартфоне 14-летней давности?

Уровень сложностиСредний
Время на прочтение19 мин
Количество просмотров8.6K
image

С момента выхода первой части статьи из рубрики «сам себе экосистема» прошёл уже практически год! За это время, мы успели с вами реализовать клиенты VK и YouTube, которые работают на Android 2.2+, а также на Windows Phone 8, написать небольшую 2D-игру с нуля весом менее 1Мб, которая работает практически везде и довести существующее приложение до ума, дабы оно работало даже на смартфоне с дисплеем 240x320! Но на дворе 2024 год, люди стремительно переходят из соц. сетей в продвинутые мессенджеры и уже сложно себе представить современного человека, который не пользовался бы «телегой» или даже «вайбером» в качестве основного средства общения. Поэтому я решил реализовать клиент Telegram на смартфоне 14-летней давности на базе официальной реализации MTProto от команды Telegram — TDLib. Сегодня мы с вами: узнаем новые причины мотивации вернуть в строй смартфоны прошлых лет, напишем на C# реле-сервер, который обрабатывает пакеты MTProto и кодирует их в простой текстовый формат датасетов, который можно моментально обработать даже при нестабильном GPRS-соединении на 21-летнем Siemens C60, а также узнаем о разработке миниатюрных Android-приложений на базе «голого» API-системы, которые не тянут за собой никаких зависимостей, в том числе и AppCompat/androidx. Интересно? Тогда жду вас под катом!
Читать дальше →
Всего голосов 86: ↑85 и ↓1+84
Комментарии32

Супер-эффективная архивация — сжимаем все что угодно до 32 байт

Уровень сложностиСредний
Время на прочтение4 мин
Количество просмотров33K

Будем разрабатывать архиватор, который может сжимать данные любого размера и типа до 32 (38 с метаданными) байт. Рассмотрим достоинства и недостатки данного алгоритма, возможные способы улучшения его работы.

Распаковать
Всего голосов 121: ↑114 и ↓7+107
Комментарии79

KatWalk C2: ч.4: поиграемся с прошивкой

Уровень сложностиСредний
Время на прочтение13 мин
Количество просмотров912

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

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

Давайте что-нибудь в нём пропатчим!
Всего голосов 1: ↑1 и ↓0+1
Комментарии0

Диагональная ориентация как идеал расположения экрана

Время на прочтение2 мин
Количество просмотров14K

Свободное вращение нашей планеты происходит с наклонением. Причины этому заложены давно. Вероятно, около 4,5 миллиарда лет назад Земля столкнулась с планетой Тейя. Так у Земли появилась Луна и наклон орбиты в 22,44 °.

Поскольку Земля вращается вокруг своей оси с наклонением, это приводит к неравномерности распределения излучения Солнца. Говоря проще, именно из-за наклонения планеты мы испытываем смену времён года.

Если наклонение орбиты важно для жизни на Земле, то нужно ли применить наклонение в 23,44 ° для ориентации монитора?

Читать далее
Всего голосов 73: ↑72 и ↓1+71
Комментарии48

[1 апреля] Масштабные изменения в C# 14.x и дальнейшие планы развития .NET

Уровень сложностиПростой
Время на прочтение3 мин
Количество просмотров12K

Масштабные изменения в C# 14.x и дальнейшие планы развития .NET

Пока разработка .NET 9 идет полным ходом, Microsoft приоткрыла нам завесу дальнейших будущих масштабных изменений в экосистеме .NET. Компания поделилась своим видением развития новой версии платформы .NET и C# в частности, которые мы обсудим в данной статье.

Читать далее
Всего голосов 31: ↑28 и ↓3+25
Комментарии16

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

Как построить мастабу

Уровень сложностиПростой
Время на прочтение12 мин
Количество просмотров2.7K

Фараон, вышедший в далеком 1999 году был одной из первых игр, которые предлагали поэтапное строительство зданий. Да которые еще и требовали наличие разных ресурсов. Навскидку могу припомнить серию Settlers, Majesty и может еще парочку. После Цезарь III, исхоженного вдоль и поперек, где основным ресурсом при постройке зданий были монеты, это было действительно удивительно и ново. Особым удовольствием было наблюдать, как город живет своей жизнью в процессе постройки монументов, помню просто построил минимальную необходимую инфраструктуру для монумента и просто наблюдал как архитекторы жаловались на недостаток материалов, рабы бегали то на фермы, то на строительную площадку, торговцы периодически продавали кирпичи. Ну и остальной город, конечно, жил своей жизнью, можно даже забыть на какое время про отдельные части города, игра все равно не остановится, и тут понимаешь почему игра до сих пор остается одним из лучших градостроев: отличительная особенность серии — «баланс», баланс отточенный в мелочах. Восстанавливая эту часть игры, я не перестаю удивляться как это все было реализовано на тех аппаратных средствах, замечу, очень и очень небольших, 64Мб оперативки было далеко не у всех. Одним из нововведений монументов было то, что они были составными зданиями, отдельные части могли быть заменены на другие, что в общем давало возможность из одного набора текстур создавать разные по виду здания. Это сейчас кажется, что такой подход есть в любой игре, но в 99 такой механикой могли похвастаться немногие. Сначала я пытался восстановить оригинальный алгоритм отрисовки, но быстро понял, что столько if не осиливаю не только я, но и компилятор, пришлось велосипедить.

Malaria doesn't seem to be a problem here
Всего голосов 25: ↑25 и ↓0+25
Комментарии6

Исходников нет, но мы не сдадимся: как и зачем я портировал более старый Android, чем стоял «с завода»?

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


Моддинг-сцена с разработкой и портированием кастомных прошивок для Android-устройств существует вот уже более 10 лет. В основном, энтузиасты пытаются проапгрейдить свои устройства путем портирования более свежих версий Android, чем предлагает производитель девайса. Чего уж говорить, если Galaxy S III, которому уже 12 лет стукнуло, получил неофициальный апгрейд до Android 14. Порой мне в голову приходят различные, весьма странные моддерские мысли: например, почему бы не портировать на старенький смартфон… ещё более старую версию Android, дабы посмотреть «что будет». Казалось бы «портировал и портировал», но в процессе работы я столкнулся с множеством интересных нюансов и особенностей работы Android, о которых хотел бы рассказать и вам — моим читателям! Сегодняшняя статья будет в классическом «научпоп»-стиле без кода, зато с подробными объяснениями одной из техник портирования Android-прошивок путем патчинга скриптов для конфигурации системы и подмены Board-specific библиотек, дабы система «увидела» всё необходимое железо! Интересно? Тогда жду вас под катом!
Читать дальше →
Всего голосов 85: ↑84 и ↓1+83
Комментарии32

KatWalk C2: ч.3: отрезаем провода

Уровень сложностиСредний
Время на прочтение28 мин
Количество просмотров2.1K

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

Теперь познакомимся с Bluetooth LE и узнаем, почему приходится писать свой приёмник а не просто полагаться на операционную систему.

Кабель? Нет, спасибо. Но как?
Всего голосов 12: ↑12 и ↓0+12
Комментарии10

Почем бакалавриат для народа?

Уровень сложностиПростой
Время на прочтение3 мин
Количество просмотров5K

Этот случай произошел некоторое время назад. Один мой небольшой фанат обратился ко мне с деликатной просьбой сделать репозиторий приватным на один день т.к. реподаватель выполняет поиск дипломов по гитхабу...

Узнать чем дело закончилось
Всего голосов 17: ↑5 и ↓12-7
Комментарии15

Первый легендарный мобильный GPU: каким был PowerVR MBX Lite? Пишем игру-демку про «жигули» с нуля

Уровень сложностиСредний
Время на прочтение22 мин
Количество просмотров4.9K
image


Пожалуй, многие из вас помнят, какими были мобильные игры до и после выхода первого iPhone. В начале 2000-х годов, ещё до появления яблочного смартфона, игры для телефонов в основном были весьма интересными, но тем не менее, достаточно простенькими с точки зрения графики и реализации в целом. После запуска AppStore в 2008 году, на iPhone начали выходить самые разные красочные, невиданные раннее по уровню детализации и проработке 2D и 3D игры. Но появление таких игр — отнюдь не заслуга Apple, а относительной малоизвестной компании PowerVR (подразделение Imagination Tech), которая смогла разработать на базе видеочипа Dreamcast и внедрить один из первых действительно массовых мобильных 3D-ускорителей, имя которому — PowerVR MBX! Сейчас мы с вами привыкли, что почти любой дешевый смартфон может отрисовывать графику уровня PS3 в 1080p, а то и выше, но когда-то даже уровень PS2 был роскошью… Сегодня мы с вами: узнаем предысторию появления аппаратно-ускоренной 3D-графики на телефонах, рассмотрим такую фирменную фишку PowerVR, как тайловый рендеринг, а в практической части статьи нам поможет легендарный КПК Dell Axim X51v с MBX на борту, под который мы напишем 3D-игру «про жигули» с нуля! Интересно? Тогда добро пожаловать под кат!
Читать дальше →
Всего голосов 62: ↑61 и ↓1+60
Комментарии26

KatWalk C2: ч2, подслушаем, подсмотрим и разнюхаем или как общаться с незнакомым железом на незнакомом языке

Уровень сложностиСредний
Время на прочтение27 мин
Количество просмотров882

В прошлой статье я рассказал что это за платформа, и показал как можно получить данные с неё и как встроить код в стороннее приложение.

Однако, получение данных требует постоянно висящего приложения (на C#), и надо понять что же конкретно оно делает.

Давайте разберёмся как общаться с железом и избавимся от балласта!.. Переписав на Kotlin. Почему Kotlin? Потому что я на нем никогда еще не писал.

Погружаемся
Всего голосов 2: ↑2 и ↓0+2
Комментарии4

Настоящий игровой роутер

Уровень сложностиСредний
Время на прочтение11 мин
Количество просмотров20K
Гоняем GTA: Vice City на беспроводном роутере TP-Link TL-WDR4900.

Читать дальше →
Всего голосов 73: ↑72 и ↓1+71
Комментарии19
1
23 ...

Вклад авторов