Pull to refresh
2
0
Андрей Филипенков @kambala

iOS и Qt разработчик

Send message

Спасибо! Ребята уже что-то посмотрели, не уверен, правда, вливали ли какие-то фиксы

Большое спасибо за проведённый анализ! У нас даже есть таск для прогонки PVS-Studio, но пока всё руки не доходили)

Над проектом трудится большая команда разработчиков

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

редактирование точек останова можно выполнять и мышкой, кликнув правой кнопкой на нужную — думаю, это стоит добавить в статью.

для команды expression есть удобная аббревиатура: просто буква e. также через нее можно вводить переменные на уровне отладчика, простой пример:

e let $myVar = 1
po $myVar

Чарльзом можно пользоваться по полчаса бесплатно, после этого надо перезапустить приложение.

также не упомянули mitmproxy и еще там был какой-то бесплатный прокси с веб интерфейсом (забыл название).

а давно Postman стал платным? пару лет назад там все работало бесплатно...

ImplStrategy.singleton.rawValue == ImplStrategy(rawValue: "Resilent") // true

Похоже на опечатку и имелось в виду

ImplStrategy.resilent == ImplStrategy(rawValue: "Resilent") // true

Флаг BUILD_LIBRARY_FOR_DISTRIBUTION=YESнеобходим для подготовки к дистрибьюции архива через XCFramewrok.

К xcframework этот флаг не имеет никакого отношения. Он нужен для того, чтобы собранная библиотека, в исходниках которой есть минимум один свифт файл, могла быть импортирована свифт компилятором более новой версии. В смысле не сам бинарник библиотеки, а её swiftinterface файла.

Файлы с расширениями .a и .xcframework — это лишь способ представления и упаковки библиотек в Linux системах. 

Наверное в UNIX системах?

CMake — это не система сборки, а генератор файлов для систем сборки

Точно - карамба (не мог вспомнить сходу когда комментарий писал). Возможно есть и ещё аналоги.

2) вероятно учетка Гостя

4) файрвол есть (pf), настройкам поддается

5) да, штатно

6) да, штатно

7) Path Finder наверное ближе всего к тоталу из не-терминмальных

8) пунто вроде и под Макос есть, но есть и аналогичные приложения

9) не совсем то же самое, но есть системный Automator. ну и в настройках системы можно назначать горячие клавиши на многие вещи

11) симлинки есть конечно. vhdx — виртуалки? ну VirtualBox есть...

12) NTFS поддерживается системой в ридонли режиме, есть сторонние драйвера для записи. из коробки — exFAT (ну и FAT32).

в тотале можно пробелом выделять

Еще напрягло (и напрягает до сих пор) скроллинг по колесу внешней (не эппловской, а логитековской) мыши: он то слишком быстрый, то слишком медленный, и нельзя настроить, чтоб было привычно, как в Windows.

Можно улучшить положение с помощью https://mos.caldis.me/

1) под fat library/framework традиционно понимается universal binary, когда в единый бинарник слеплено несколько разных архитектур. XCFramework же — это папка со специальной структурой, допускающая множество бинарников (которые могут быть universal) внутри.

2) не совсем понимаю как сборка под новую архитектуру связана с обновлением железа, на котором это проводится, только если железо невозможно обновить до той макОС, которая поддерживает соответствующий компилятор (clang/Xcode 12, доступны с 10.15). Но даже тут есть OCLP, который выручит, но применение его в крупных компаниях — это уже другой вопрос :)

Мультиплеер уже есть. Также есть «лобби» (внешний сервер) на всех платформах кроме андроида, для него попробуем добавить в версии 1.2.

В 5% в основном входят всякие баги: например, какое-нибудь заклинание криво работает, что-то не пишется в лог битвы, кривой расчет очков хода при Полете, ИИ изредка тупит и т.п. https://github.com/vcmi/vcmi/issues Но вроде бы ничего особо критичного.

В опенсорсных Героях 3 есть родные версии под все десктопные ОС, а также под андроид и iOS. Под браузер, правда, нет, но потенциально это возможно (WASM).

Требуются игровые данные (ресурсы) от оригинальной игры. Об особенностях установки можно прочитать на вики проекта.

Механика оригинала завершена где-то на 95%. ИИ самописный, подключить ИИ оригинальной игры возможности нет. Также в наличии немалое количество разных модов (например, новые города). Совместимость с WoG и HotA есть, но не полная (работа над портированием фич ведется).

Выбор распространять в виде fat framework, а не xcframework, когда арм маки существуют уже пару лет, мягко говоря, странный...

Да, выполняются на "мастере", поэтому документация рекомендует выполнять любые "тяжёлые" вычисления / операции (парсинг файла, например) на агенте через шелл скрипт, а не напрямую на груви.

Подход напоминает CocoaLumberjack. Рассматривался ли этот вариант?

RN - это достаточно специфическая вещь. Стоило бы упомянуть в статье, что именно он помешал выбрать самый простой вариант для CI.

К тому же, всегда можно было бы поставить несколько его версий на одной машине.

Однако в этой простоте кроется и большой минус: если кто-то решит настроить CI для другого проекта, то он с легкостью может какой-нибудь новой зависимостью положить весь ваш CI/CD. Или же во время настройки у вас ничего не будет работать из-за уже установленных зависимостей.

Также у вас не получится просто взять и запустить на одном раннере несколько задач без подготовки и написания пары строчек кода.

У нас уже лет 5 через дженкинс собирается по 1-4 проекта параллельно на одной машине без сучка и задоринки. Какая у вас была проблема?

Мы не можем напрямую из кода получить доступ к этим настройкам

Вообще-то можем, если сделать это в C/C++/ObjC коде, т.к. сишные макросы позволяют задавать им произвольные значения, в т.ч. и строковые.

Для этого в настройку GCC_PREPROCESSOR_DEFINITIONS записывается SERVER_URL=\"$(SERVER_URL)\" (имя макроса с левой стороны можно выбрать любое), что делает доступным макрос SERVER_URL в C коде, который превратится в строковый литерал.

Далее создаем пару .h/.m файлов, в которые поместим функцию (или класс, как душе угодно), возвращающую наш макрос в виде подходящего ObjC объекта:

NSURL *serverURL(void) {
  return [NSURL urlWithString:@SERVER_URL];
}

В принципе, @ можно поместить и прямо в определение макроса. Также можно добавить_NonNullдля возвращаемого типа либо просто обернуть объявления в NS_ASSUME_NONNULL_BEGIN/NS_ASSUME_NONNULL_END в заголовочном файле.

Осталось поместить созданный заголовочный файл в bridging header — и Свифт код сможет увидеть функцию serverURL().

1

Information

Rating
Does not participate
Location
Москва, Москва и Московская обл., Россия
Date of birth
Registered
Activity

Specialization

Software Developer, Mobile Application Developer
Senior
From 400,000 ₽
iOS development
SWIFT
Fastlane
Objective-C
C++
Qt
QML
Cmake