Перейти к содержимому
Korean Random

GPCracker

Пользователь
  • Публикации

    2 735
  • Зарегистрирован

  • Посещение

  • Дней в лидерах

    59

Последний раз GPCracker выиграл 11 марта

Публикации GPCracker были самыми популярными!

Репутация

2 000 ⭐⭐⭐⭐⭐

О GPCracker

  • Звание
    Piranhas Team
  • День рождения 05.11.1994

Основная информация

  • Пол
    Мужчина
  • Город
    Москва
  • Интересы
    Схемотехника, программирование и телекоммуникации.

Контакты

  • Сервер WoT
    RU / CIS

Посетители профиля

22 431 просмотр профиля
  1. GPCracker

    Портал модов от WG

    Как будто это не портал модов, а портал косяков. Добавить Боба Марли и вообще красота и гармония будет :)
  2. GPCracker

    Портал модов от WG

    Ох... Господа, вам еще не надоело биться головой об стену? Занялись бы чем-нибудь полезным, что-ли.
  3. GPCracker

    [1.0.2][06.01.2018] Инструменты для работы с текстами в WoT

    Нужно смотреть, в каких файлах оно лежит, и с какими модами вероятнее всего будет конфликтовать твой мод, и уже на основании этих аналитических данных делать вывод, насколько приемлемо использовать установку по типу "замена файла локализации". Иных путей внести изменения в локализацию лично мне пока не известно, есть конечно определенные мысли, но проверить их пока что нет возможности.
  4. Скорее всего, опять имеет место легаси-код. И да, вспомни как было с обновлением боевого интерфейса на ActionScript 3... сколько там легаси висело в клиенте? А как насчет этого, этого и этого? А теперь заглядываем сюда... А потом сюда. И в итоге попадаем... в никуда. Мне не удалось найти в питоне установку хэндлов для этих команд ExternalInterface. Полагаю, они отлавливаются и обрабатываются на уровне си. З.Ы. Возможно, я скинул тебе что-то полезное :)
  5. Подобные перекосы скорее всего временные, ибо такие масштабные миграции чаще всего проводятся по частям, и в течении некоторого времени в клиенте остается легаси-код. Такое уже не раз было, внимательные эту тенденцию давно заметили. Ты не забывай, что в питоне генерируются только те тексты, которые через питон форматируются. Для всего остального есть константы и локализация на уровне DAAPI, и не всегда эти константы прописаны в питоне (могут быть исключительно флешовые). На самом деле не стоит забывать про то, что локализованные строки это в первую очередь файлы, и, соответственно, операции ввода-вывода, которые имеют способность подвешивать поток. Так что вывод модуля gettext в си вполне оправдан. Что касается прослойки i18n, то в свете локализации на уровне DAAPI она превращается в ненужную (с точки зрения разработчиков игры) короткую петлю в питон и обратно, которая только жрет лишние ресурсы, создает лишний код, так еще и GIL просит. Я уже написал чуть выше про легаси-код. А вот такая фигня реально бесит. У них там творится какой-то ад в плане разработки. И, полагаю, так сделали потому, что из-за большого количества факапов тамошние бакланы не успевали настучать/отдебажить свой мега-микро-патч своим кривым клювом к тесту или к релизу, поэтому его одобрили на мерж только в самый последний момент, когда релизная ветка уже висела в зафиксированном состоянии (когда началось предрелизное тестирование, и из изменений допускаются только исправления критических багов).
  6. Я в курсе, и там ошибки нет. Написано именно то, что подразумевалось. Написать на Python с дополнительными декларациями от Cython (собственно, я упростил до "написать на Cython"), чтобы код в функциях можно было спокойно вывести из-под GIL. Потом собрать с помощью Cython в сишный модуль и закомпилить с питоновскими хедерами. Проблема тут именно в питоновских хедерах, именно с ними связано 99% геморроя во всем этом деле.
  7. Походу я опять что-то пропустил... Но насчет того, что такая прекрасная обнова ****** как вовремя, это ты прям в точку сказал - я вообще через пару дней неизвестно пока насколько могу уйти в оффлайн (уезжаю в другой город), по крайней мере с возможностью работы над модами ожидаются определенные весьма существенные сложности, даже если и удастся запилить там себе интернет. Видимо, тем, что это, во-первых, относительно медленно получается, ибо строк на старте игры нужно локализовать достаточно много, или оно будет тормозить в процессе, во-вторых, немного нелогично, ибо локализация используется в си-части игры, неявно линкуется на питон-модуль из си-модуля, а потом через питон снова на си выруливает, особенно учитывая что есть варианты gettext для си, в-третьих, это пресловутый GIL который вешает все остальные питон-потоки, пока работает локализатор, что не есть круто. На самом деле, изменение вполне логичное, проблема в том, что запилено все как обычно (почему-то я в этом не сомневаюсь даже) через одно известное место. Ну а по-другому по сути никак. Не влезая в питон, ты не сделаешь возможность рулить этим из питона без диких костылей и велосипедов, а влазить в питон... читай выше. На самом деле pyd не такая большая проблема, если разработчики вернут обратно экспорты питоновских функций в exe. В таком раскладе тебе нужно будет просто найти нужную сигнатуру для хука в си, а весь код можно будет просто на Cython написать, по сути тот же питон, только с дополнительными директивами.
  8. GPCracker

    Исходники модов StranikS_Scan'a на GitHub

    Если взялся обвинять - железные доказательства в студию. В противном случае это может расцениваться как клевета. Со всеми вытекающими.
  9. GPCracker

    Исходники модов StranikS_Scan'a на GitHub

    Мне кажется, или самое время призвать сюда @Mr 13... Ибо если общение начинается с бездоказательных оскорблений, ничем хорошим оно точно не закончится.
  10. GPCracker

    [1.0.2][06.01.2018] Инструменты для работы с текстами в WoT

    Только если декомпилировать до уровня исходника и замержить, разрешив все возникающие конфликты. Но сомневаюсь, что у среднестатистического пользователя на такое хватит квалификации.
  11. GPCracker

    Утечка памяти

    А ты уверен, что твою функцию не считают "крадущей" ссылки? Кто и где ее вызывает? Кстати, нашел еще несколько интересных ссылок по теме (раз, два, три).
  12. GPCracker

    Утечка памяти

    @Pavel3333, возвращаясь к твоему вопросу, "stealing reference" and "returning borrowed reference" это исключения, и они прописаны в доках для каждой "исключительной" функции. Есть еще одно простое правило - конструктор никогда не возвращает "borrowed" ссылку - в противном случае объект будет сразу же уничтожен сборщиком мусора. Поэтому если ты создаешь какой-то объект внутри функции - его нужно уничтожить самому, или отдать функции, которая "украдет" ссылку. Если же ты создал объект, скормил его функции, которая ссылку не крадет, а потом он тебе стал не нужен - ты должен его самостоятельно уничтожить. Твой "второй ответ из шапки" как раз и показывает, что в первом ответе в коде про***но уничтожение сразу двух объектов - полученного метода и результата вызова этого метода.
  13. GPCracker

    Утечка памяти

    Насколько мне подсказал www.google.com, довольно неплохо процесс работы со ссылками описан здесь. Если максимально сжать написанное, в большинстве случаев функции не крадут право собственности на ссылку, но почти всегда его отдают, если, конечно, не указано иное. Право собственности на ссылку означает, что та функция, которая им обладает, отвечает за вызов Py_DECREF. Единственный вопрос, который пока еще остается открытым, это когда наш уважаемый Павел таки освоит основы использования поисковика, научится читать в оригинале и перестанет задавать бородатые вопросы?
  14. @Pavel3333, поддержу, очень нужная штука, существенно упрощающая жизнь, в особенности тем, кто упирается в скорость работы питона, в отсутствие нужных библиотек или ситуацию, когда си-часть библиотеки в клиент не включена, ибо именно из-за этой самой проблемы к танкам проблематично (можно, но очень сложно) подключить нужный си-модуль (стандартный или собственной разработки).
  15. GPCracker

    [Решено] Помогите с Py_INCREF() и Py_DECREF()

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