MakeCorner: теперь уголки мне нравятся

Наконец-то мне стали нравится уголки, которые генерирует моя программа MakeCorner, переписанная на Go. Несколько последних постов с фотографиями обработаны именно этой программой. Теперь осталось сделать сохранение EXIF и весь функционал из версии на PHP будет перенесён.

Программа, кстати, автоматически должна стать мультплатформенной. Я не пробовал, но компилятор Go есть для MacOS, FreeBSD, Linux и Windows (и трёх типов архитектур — ARM, i386 и x86-64/amd64).

Правда, для работы требуется библиотека GD, а она вряд ли скомпилируется на ARM.

Комментарии 29

zg (zg.livejournal.com) № 1
а она вряд ли скомпилируется на ARM

почему?

Евгений Степанищев (bolknote.ru) автор № 2
С программами на Си такое бывает. Завязываются на порядок байт, вызывают ассемблер, рассчитывают на определённый размер int и так далее. 100500 способов написать непереносимую программу.
zg (zg.livejournal.com) № 3
С программами на Си такое бывает.

неожиданный переход от GD к «программе на Си».

Завязываются на порядок байт

армы bi-endian. в большинстве телефонов, планшетов, нетбуков — включён как раз littleendian.

вызывают ассемблер

в GD нет ассемблера.

рассчитывают на определённый размер int

размер int'а на армах совпадает с x86.

Евгений Степанищев (bolknote.ru) автор № 4

Комментарий для zg.livejournal.com:

неожиданный переход от GD к «программе на Си».

GD — программа на Си.

в GD нет ассемблера.

Я лишь привожу примеры.

GD зависит от кучи других библиотек (libjpeg, freetype, libpng и прочее), которые зависят от другой кучи библиотек (zlib, например) и всё это зависит от библиотек системы.

Причин для несовместимости может быть целая куча.

zg (zg.livejournal.com) № 5

Комментарий для Евгения Степанищева:

GD — программа на Си.

т.е. то что справедливо для любой программы на си, справедливо и для GD, так?

GD зависит от кучи других библиотек

1. zlib, libjpeg, freetype и libpng для армов собираются даже ребёнком.
2. даже убунта есть для армов. возможно, уже с собранным GD.

zencd (zencd.livejournal.com) № 7
А зачем вобще модифицировать изображения, подготавливать их для блога? Через CSS никак?
Евгений Степанищев (bolknote.ru) автор № 10
А зачем вобще модифицировать изображения, подготавливать их для блога? Через CSS никак?

В общем случае никак.

Евгений Степанищев (bolknote.ru) автор № 8

Комментарий для zg.livejournal.com:

т.е. то что справедливо для любой программы на си, справедливо и для GD, так?

Так. И, обычно, если автор проекта специально не заботится о совместимости, программа не совместима.

zlib, libjpeg, freetype и libpng для армов собираются даже ребёнком.

Ок, значит соберётся.

доброжелатель № 11
дело делаешь хорошее, но всё же зачем выкладывать на github makefile со своими hardcode path'ами?
ну пришлось подредактировать, вроде бы даже make отработал без проблем, появился файл _cgo1_.o (собираю под linux), file _cgo1_.o говорит о том, что это нормальный ELF файл, но при запуске он молчит, даже на --help не реагирует.
Евгений Степанищев (bolknote.ru) автор № 12
дело делаешь хорошее, но всё же зачем выкладывать на github makefile со своими hardcode path'ами?

Честно сказать, я редко пишу makefile и не знаю как сделать правильно.

ну пришлось подредактировать, вроде бы даже make отработал без проблем, появился файл _cgo1_.o (собираю под linux), file _cgo1_.o говорит о том, что это нормальный ELF файл, но при запуске он молчит, даже на --help не реагирует

Надо сделать make corner, потом запускать файл «corner»

Евгений Степанищев (bolknote.ru) автор № 13
Хм. Я тут подумал, что оно всё же не заработает. У меня там используется jpegtran, скомпиленный под Mac. Видимо надо-таки поработать над Makefile.

В общем, для работы требуется jpegtran, скомпиленный для конкретной платформы, потом сконвертированный jpegtran-convert.go и преобразованный в модуль по образу и подобию jpegtran.go.

Подумаю сегодня как это сделать мультиплатформенно.
Евгений Степанищев (bolknote.ru) автор № 15
Похоже нет никакого смысла в том, чтобы вставлять jpegtran внутрь программы. Гораздо проще сказать, что jpegtran просто нужен для работы программы.
zg (zg.livejournal.com) № 18

Комментарий для Евгения Степанищева:

Так. И, обычно, если автор проекта специально не заботится о совместимости, программа не совместима.

обычно, это в сколько в процентах?
ну и как бы это не значит, что не существует программ, авторы которых не заботились о совместимости, а они совместимы.

Евгений Степанищев (bolknote.ru) автор № 19

Комментарий для zg.livejournal.com:

обычно, это в сколько в процентах?

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

ну и как бы это не значит, что не существует программ, авторы которых не заботились о совместимости, а они совместимы.

Конечно не значит.

доброжелатель № 20
Комментарий для Евгения Степанищева:

Я ещё не пробовал компилировать, но за новый makefile и readme огромное спасибо!
Как попробую -- расскажу об успехах.
zg (zg.livejournal.com) № 21

Комментарий для Евгения Степанищева:

что разрабатывалось под другую платформу.

мы всё таки про разные архитектуры говорим.

Конечно не значит.

а почему же вы в таком случае считаете обоснованным переход от обсуждения GD к обсуждению абстрактной си программы?

Евгений Степанищев (bolknote.ru) автор № 22

Комментарий для доброжелатель:

Как попробую — расскажу об успехах.

Спасибо! Буду благодарен.

Евгений Степанищев (bolknote.ru) автор № 23

Комментарий для zg.livejournal.com:

а почему же вы в таком случае считаете обоснованным переход от обсуждения GD к обсуждению абстрактной си программы?

Я оперирую вероятностями. Вероятнее всего, что программа на Си (GD — программа на Си) не соберётся под чужой платформой.

Евгений Степанищев (bolknote.ru) автор № 25
Комментарий для zg.livejournal.com:

С большой. Этот вопрос уже задавался: «„обычно“, это в сколько в процентах?» И я уже на него подробно отвечал.
Евгений Степанищев (bolknote.ru) автор № 27
Комментарий для zg.livejournal.com:

Вы издеваетесь что ли или у вас скролл не работает?

Вот ссылка: /all/3257#n27921
zg (zg.livejournal.com) № 28
Вы издеваетесь что ли или у вас скролл не работает?

нет. вы же написали:

И я уже на него подробно отвечал.

а по ссылке субъективная вода.

Евгений Степанищев (bolknote.ru) автор № 29
Комментарий для zg.livejournal.com:

Это не вода, это моё субъективное мнение, на которое я имею право. Я же не Капитан Статистика.