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

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

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

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

Поделиться
Отправить
29 комментариев
zg (zg.livejournal.com)

а она вряд ли скомпилируется на ARM

почему?

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

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

С программами на Си такое бывает. Завязываются на порядок байт, вызывают ассемблер, рассчитывают на определённый размер int и так далее. 100500 способов написать непереносимую программу.

zg (zg.livejournal.com)

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

С программами на Си такое бывает.

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

zg (zg.livejournal.com)

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

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

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

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

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

все равно справа внизу уголок не нравится

zencd (zencd.livejournal.com)

А зачем вобще модифицировать изображения, подготавливать их для блога? Через CSS никак?

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

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

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

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

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

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

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

Комментарий для nikolay:

все равно справа внизу уголок не нравится

Вроде он ничем не отличается от всех других.

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

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

А зачем вобще модифицировать изображения, подготавливать их для блога? Через CSS никак?

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

доброжелатель

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

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

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

дело делаешь хорошее, но всё же зачем выкладывать на github makefile со своими hardcode path’ами?

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

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

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

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

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

Хм. Я тут подумал, что оно всё же не заработает. У меня там используется jpegtran, скомпиленный под Mac. Видимо надо-таки поработать над Makefile.

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

Подумаю сегодня как это сделать мультиплатформенно.

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

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

Вставил в makefile сборку jpegtran, в этой же папке должен лежать файл jpegtran.linux.bz2. Это просто jpegtran ( http://jpegclub.org/jpegtran/ ), переименованный и сжатый bzip2.

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

Похоже нет никакого смысла в том, чтобы вставлять jpegtran внутрь программы. Гораздо проще сказать, что jpegtran просто нужен для работы программы.

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

Нужно узнать как люди пишут файл configure.

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

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

Я описал процедуру компиляции в файле README.

zg (zg.livejournal.com)

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

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

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

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

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

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

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

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

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

доброжелатель

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

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

zg (zg.livejournal.com)

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

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

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

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

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

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

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

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

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

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

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

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

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

zg (zg.livejournal.com)

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

Вероятнее всего

с какой вероятностью?

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

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

С большой. Этот вопрос уже задавался: «„обычно“, это в сколько в процентах?» И я уже на него подробно отвечал.

zg (zg.livejournal.com)

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

дайте ссылку.

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

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

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

Вот ссылка:  http://bolknote.ru/all/3257#n27921

zg (zg.livejournal.com)

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

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

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

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

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

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

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

Популярное