Difference between revisions of "TerrariumAssembler"

From Wiki4Intranet
Jump to: navigation, search
(Деплой на 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

Проблема.

Околонаучные/высокотехнологичные приложения:

  • Нет альтернативы — Numpy+Scipy+OpenCV+Keras…
    • gonum
  • Множество других фишек и батареек Python
  • Быстрый цикл экспериментов и разработки
  • Связь с бандлами приложений (Tesseract, Imagick)

Надо

  • Деплой на
    • Все версии Windows
    • Все версии Linux (включая очень странные)
  • Работало быстро
  • Секретные алгоритмы
    • On Impossibility of Obfuscation [1]
    • PYC-файлы, cx_freeze, py2exe — абсолютная открытость.

Деплой на Linux. Стандартные варианты.

LotOfLinuxes.jpg

Нативная сборка под каждый дистрибутив

  • Ад. RPM. DEB. RPM v4, v5, v4+, RPM on APT.
  • Все старое.
  • Нет контроля над библиотеками.
    • «Ограниченная поддержка» — «мы только собрали, не помним как, а поддержка — »
  • Комбинаторный взрыв вариантов тестирования.
  • Можно — но за отдельные деньги.


Деплой на Linux. Их слишком много.

Periodic-table-of-distro.png

Деплой на Linux. Контейнеры.


Стандартные контейнеры

  • Масса вариантов
    • Docker
    • Flatpack
    • Snap
    • AppImages
  • Хорошая идея
  • Нет стандартов
  • Нет на ряде дистрибутивов

Ожидания заказчика — «папка, копировать, просто работает»

Деплой на Linux. Просто папка? .

  • «Нельзя просто взять и скопировать»©
  • Неочевидно для Windows-пользователей — «работает же с Win95…»
    • Там это специально добиваются, и это недешево.
  • libc-совместимость → major-изменения в API каждые пару лет.
  • ld-image.so — базовый кирпич «в дженге»
  • ELF — все захардкожено жестко, по путям. «RPATH»…

Технически решаемо, но это не просто «скопировать».


CasketAssembler .

  • Casket — вообще-то шкатулка.
    • но и увы, гроб. Надо будет переименовать.

→ TerrariumAssembler

Casketassembler-ikea.png


Возможные проблемы .

Концептуальные недостатки .

Очевидные проблемы «трагедии общин»

  • На порядок жирнее
  • Траты диска, памяти.
    • Каждую популярную софтину так нельзя.
  • Уязвимости надо отслеживать
    • Не стоит для открытых сервисов.

Падения компиляции.

Вероятностное.

{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"