Difference between revisions of "TerrariumAssembler"
From Wiki4Intranet
(→Деплой на Linux. Их слишком много.) |
|||
Line 66: | Line 66: | ||
− | === | + | == Возможные проблемы . == |
+ | === Концептуальные недостатки . === | ||
Очевидные проблемы «[https://habr.com/ru/post/433052/ трагедии общин]» | Очевидные проблемы «[https://habr.com/ru/post/433052/ трагедии общин]» | ||
* На порядок {{@|жирнее}} | * На порядок {{@|жирнее}} | ||
Line 73: | Line 74: | ||
* {{@|Уязвимости}} надо отслеживать | * {{@|Уязвимости}} надо отслеживать | ||
** Не стоит для открытых сервисов. | ** Не стоит для открытых сервисов. | ||
+ | |||
+ | === Падения компиляции. === | ||
+ | Вероятностное. | ||
+ | <pre> | ||
+ | {standard input}: Assembler messages: | ||
+ | {standard input}:1898: Warning: end of file not at end of a line; newline inserted | ||
+ | {standard input}:3538: Error: number of operands mismatch for `movq' | ||
+ | {standard input}: Error: open CFI at the end of file; missing .cfi_endproc directive | ||
+ | gcc: fatal error: Killed signal terminated program cc1 | ||
+ | </pre> | ||
+ | |||
+ | Что можно сделать: | ||
+ | * Увеличить память в VagrantFile | ||
+ | v.memory = 16000 | ||
+ | * Уменьшить «--jobs» в "build*.sh" |
Revision as of 23:00, 4 August 2020
- Title
- TerrariumAssembler
- Author
- Stas Fomin
- Subfooter
- Stas Fomin, 17:35, 8 August 2020
Contents
Проблема.
Околонаучные/высокотехнологичные приложения:
- Нет альтернативы — Numpy+Scipy+OpenCV+Keras…
- gonum
- Множество других фишек и батареек Python
- Быстрый цикл экспериментов и разработки
- Связь с бандлами приложений (Tesseract, Imagick)
Надо
- Деплой на
- Все версии Windows
- Все версии Linux (включая очень странные)
- Работало быстро
- Секретные алгоритмы
- On Impossibility of Obfuscation [1]
- PYC-файлы, cx_freeze, py2exe — абсолютная открытость.
Деплой на Linux. Стандартные варианты.
Нативная сборка под каждый дистрибутив
- Ад. RPM. DEB. RPM v4, v5, v4+, RPM on APT.
- Все старое.
- Нет контроля над библиотеками.
- «Ограниченная поддержка» — «мы только собрали, не помним как, а поддержка — »
- Комбинаторный взрыв вариантов тестирования.
- Можно — но за отдельные деньги.
Деплой на Linux. Их слишком много.
Деплой на Linux. Контейнеры.
Стандартные контейнеры
- Масса вариантов
- Docker
- Flatpack
- Snap
- AppImages
- Хорошая идея
- Нет стандартов
- Нет на ряде дистрибутивов
Ожидания заказчика — «папка, копировать, просто работает»
Деплой на Linux. Просто папка? .
- «Нельзя просто взять и скопировать»©
- Неочевидно для Windows-пользователей — «работает же с Win95…»
- Там это специально добиваются, и это недешево.
- libc-совместимость → major-изменения в API каждые пару лет.
- ld-image.so — базовый кирпич «в дженге»
- ELF — все захардкожено жестко, по путям. «RPATH»…
Технически решаемо, но это не просто «скопировать».
CasketAssembler .
- Casket — вообще-то шкатулка.
- но и увы, гроб. Надо будет переименовать.
→ TerrariumAssembler
Возможные проблемы .
Концептуальные недостатки .
Очевидные проблемы «трагедии общин»
- На порядок жирнее
- Траты диска, памяти.
- Каждую популярную софтину так нельзя.
- Уязвимости надо отслеживать
- Не стоит для открытых сервисов.
Падения компиляции.
Вероятностное.
{standard input}: Assembler messages: {standard input}:1898: Warning: end of file not at end of a line; newline inserted {standard input}:3538: Error: number of operands mismatch for `movq' {standard input}: Error: open CFI at the end of file; missing .cfi_endproc directive gcc: fatal error: Killed signal terminated program cc1
Что можно сделать:
- Увеличить память в VagrantFile
v.memory = 16000
- Уменьшить «--jobs» в "build*.sh"