Пишу, по большей части, про историю, свою жизнь и немного про программирование.

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

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

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

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

29 комментариев
zg (zg.livejournal.com) 2011

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

почему?

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

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

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

zg (zg.livejournal.com) 2011

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

zg (zg.livejournal.com) 2011

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

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

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

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

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

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

zencd (zencd.livejournal.com) 2011

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

zg (zg.livejournal.com) 2011

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

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

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

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

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

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

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

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

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

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

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

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

zg (zg.livejournal.com) 2011

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

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

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

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

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

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

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

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

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

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

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

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

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

zg (zg.livejournal.com) 2011

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

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

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

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

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

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

zg (zg.livejournal.com) 2011

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

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

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

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

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

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

zg (zg.livejournal.com) 2011

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

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

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

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

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

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

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