Pull to refresh
-2
0
Send message

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

Входные данные:

Есть картографические программы Alpine Quest и Offline Maps, которые имеют свой проприетарный формат тайловых растровых карт *.pgd. Никакой нигде спецификации нет. Программа эта присутствует только на андроид и весьма пользуется спросом в определенных кругах

Есть карты. Много. Большие. В формате *.pgd. Исходников нет.

До использования агента я пробовал ковырять *.pgd, и единственное, что смог сделать сам на основании этого - извлечь по маске все кусочки webp мозайки в riff контейнерах. А сколько их в ширину? Где это описано? А сколько уровней детализации? А какие метаданные есть? А как их извлечь из бинаря?

Ну достал я ручками webp-кучоки. Хорошо. Методом тыка я собрал одну карту в целое изображение. Но проблема в том, что Alpine Quest применяет к этим тайлам афинные преобразования на лету и "натягивает" их на глобус. Это изображение ничего не дает. Оно не ложится на карту. А как его "натянуть"? Где взять матрицу коэффициентов? А границы minLon, minLat.....?

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

Взял приложение. Прогнал через jadx. И получил на выходе огромную лапшу и кодовую базу в сотни тысяч если не миллионы строк кода(приложение реально монстр если вникнуть сколько в нем всего учтено и заглянуть внутрь, тогда начинаешь понимать почему разработчики по сей день не могут его портировать на другие платформы). Что дальше? Знания java у меня нет. Попробовал grep'ом пробежаться по кодовой базе поискать всякие ключевые слова из бинаря, функции открытия *.pgd и нашел сотни точек входа, и все они наследуются, расширяются и так далее и тому подобное - все прелести ООП.

Я попросил GPT4.1 проанализировать кодовую базу приложения и разобрать как происходит парсинг *.pgd файла, как извлекаются тайлы, трансформации и т.д.

И он через 10 минут выдал примерный пайплайн, который на 80% соответствовал действительности.

А GPT-5(codex) написал с минимальными правками(но порой с хрустом зубов) полностью рабочую программу, которая принимает на вход *.pgd, извлекает самый детальный уровень, извлекает тайлы, собирает в холст, извлекает матрицы преобразования из pgd и прочие метаданные, применяет трансформации к холсту, режет обратно в тайлы, кладет в *.mbtiles(уже распространенный формат карт), а так же режет не несколько уровней.

На все я потратил около недели по пару-тройку часов в день.

Я понимаю, что код - говно, но опираясь на него средний разработчик уже полностью может оценить пайплайн и написать как надо, либо же можно попросить чистого агента это сделать(надо будет попробовать). И кажется мне, что это это выйдет на ПОРЯДКИ дешевле, чем прийти к разработчику с задачей реверс-инжиниринга программы, бинаря и написания готовой программы с нуля.

К слову. Программа работает отлично, но я заглянул в потребление памяти и ахнул - 13 гб в пике. GPT-5-codex предложил несколько оптимизаций, да приходилось откатываться, пробовать снова, что-то ломалось, но 2-3 часа хватило на то, чтобы в нужных местах почистить мусор, оптимизировать программу и снизить потребление памяти до 500мб хотя одна из карт - это холст размером 11008x11520 в альфа-канале.

Кому интересно, то вот https://github.com/Exieros/PGD-to-mbtiles

Если в pgd_assemble.py как по мне все еще вполне понятно, то вот в pgd_geowarp_mbtiles.py происходит вообще какая-то неведомая магия. Да, происходящее там выходит за рамки проприетарного функционала оригинальной программы и скорее всего так или иначе уже кем-то где-то решалось, но тем не менее - оно полностью решает мою задачу.

На мой взгляд LLM-агенты в будущем будут действительно очень мощными инструментами. Но и результат будут выдавать в соответствии с тем, кто им орудует. За ним надо тщательно следить потому что он может в определенный момент "кивать головой" мол все понятно, а на самом деле вообще начать делать то, что не соответствует задаче, но при этом красиво.

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

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

Шикарная статья. Мне, современному нубо-программисту, на фреймворках и библиотеках очень зашла. Очень интересно было узнать такие тонкости работы своего телефона. Подписался, жду еще 👍🏻

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

Очень сильно задумался об отказе от айфона, когда элементарно не смог найти НИ ОДНОГО нормального sftp клиента. А если что и находил можно пересчитать по пальцам одной руки либо работало через одно место. На андроиде с софтом как-то получше.

Что вы? Сейчас набегут и наставят минусов. В целом согласен. Для меня хороший продукт в мире геймдева - это значит новый опыт. Или совокупность нескольких хорошо реализованных качеств. Еще лучше если игра сделана с душой. Чтобы игра привносила что-то новое. Но ведь есть люди, которым каждый день достаточно рубины местами менять, смотреть на "крутые" спецэффекты их уничтожения, а по рекламе раз в месяц из одних "рубинов", переходить в другие. Маркетуолохам главное максимизация прибыли. Главное ЦА. Главное побольше денег и данных вытрясти из людей. Им плевать, что человек, допустим, вообще в любой жанр готов сыграть, но если в нем берущий за душу сюжет, проработанный лор и атмосферный мир. Много ли таких игр можно назвать? Да на пальцах перечислить. А когда такие "максимизаторы" прибыли, которые раз в месяц выпускают новую "уникальный", "неповторимый", "обескураживающий" симулятор сундуков(или что там нынче в моде открывать?) приходят и рассказывают как сложно продвинуть игру, как поиметь побольше денег, вкладывая как можно меньше, то становится прям совсем печально.

Проблема всех этих нейросетей, что обучены они на очень корявых данных. Можно ли на хотя бы 80% быть уверенным, что описания к картинкам писали без оценочных суждений и личных предпочтений? Вот скармливаем ей "spirits of java". В целом ожидаемо, что должно быть нечто абстрактное, раз какие-то духи. И с дУхами она справится так как я уверен артов такие вагон и маленькая тележка и нейросеть 100% выделила какие-то особенности для них. Чтобы выдать нечто близкое к java, машина должна понимать еще контекст. Просто картиночек с лого java недостаточно. Еще лучше если анализировать тексты, форумы, статьи java-разработчиков а уже на основании них пробовать построить какой-то набор машинных стереотипов. Вот даже человека попросить нарисовать, пусть даже разработчика, "spirits of java", но при этом не прибегаю к изображению компьютера, кода или лого-чашки. Сможет ли он так сходу выдать что-то? Сможет ли другой человек не знаю по какому запросу нарисовали этот рисунок сказать "ага ну это какие-то духи, java наверное?". Мне кажется чтобы выдавать такие арты нейросетям еще переть долго и долго, потому что тут требуются высшие когнитивные функции. Да и в целом лично меня не впечатляют эти достижения. Просто взять за референс 10 картинок и объединить детали из них в одну много ума не надо. И творчества как такового тут нет. Другой вопрос что множественная генерация нейросетью позволяет автоматизировать этот процесс и выдать попросту случайно какой-нибудь интересный вариант на основе которого, как рефа, можно нарисовать реально крутой, новый, "неповторимый" арт.

Душная и унылая статья. Было бы желание. Есть UNIGINE. Есть Blender. Есть open-source. Хотите принимать оплату за игры - привяжите какой-нибудь сервис, который транзитом может принимать оплату в крипте\пейпалах\картами. Вывести их как не было проблемой, так и сейчас не является. Сделайте свой лаунчер. И если игра действительно хорошая, то люди даже из-за рубежа будут его устанавливать чтобы поиграть в качественную игру. Разумеется, если делать фритуплейные дрочильни сундуков, то конечный пользователь среди десятков тысяч аналогов выберет тот, который установится и оплатится в два с половиной нажатия. Вы путаете причину и следствие. Российский геймдев мертв не потому что злые дяди куда-то там "вторглись", а потому что Российские разработчики в массе своей сделали выбор в пользу клепания однотипной помойки для масс. А интереса в нашей индустрии из-за рубежа не будет потому что все наши "творцы" почему-то решили, что нужно ориентироваться на западный вектор. Даже те же фильмы нужно снимать так чтобы это был "наш ответ x". Сделайте качественную самобытную игру и люди будут в нее играть. Да, надо будет хорошую статью расходов выделить в ее продвижение, но если игра действительно хорошая они окупятся.

Что-то не совсем понял, а зачем вообще на теге body устанавливать min-width? Почему у меня сайт спокойно ресайзится вплоть до +-180px без всяких скроллбаров? Вешать обработчик на resize event и без debounce? Нет. Спасибо. Сами создали проблему. Сами же ее решили. Молодцы.

Статья "10 трюков, которые должен знать каждый веб-разработчик" - это какая-то шутка?

Еще вчера всепропальщики кричали «Аааа все потеряно рашка вперде».
Уже сегодня дискурс сместился в сторону «А че там по закладкам в железе».

Забавно за этим наблюдать.

Information

Rating
Does not participate
Registered
Activity