Категория: Open source
AGG 0.3.1
Преди 10-на дни пуснах новата версийка на галерийния генератор - 0.3.1.
Ето какво ново в него:
- Възможност за вграждане на воден знак в картинките;
- Възможност реда на картинките в галерията да бъде разместван, да се добавят нови картинки, да се трият, да се правят множествени операции - например, завъртане на всички картинки на 90 градуса, сортиране, и прочее. От File->Add/Reorder images е достъпно;
- Може да кажете на AGG да ви изнамери всички повтарящи се картинки (еднакви или много подобни) в проекта. Прагът, определящ максималната разлика между две "еднакви" картинки може да се настройва;
- "Къси имена" на файловете в HTML-а на галерията, за да не се разбутва таблицата;
- При желание, AGG директно може да ви отвори генерираната галерийка в браузър;
- Списък с "последно отваряни" проекти.
- Timelapse tool-ът вече е официален. Като подобрения в него: вече не изисква непременно картинките да имат EXIF, може да го ползвате просто за замазване на яркостта/премахване на трептене. Също така, вече се справя с картинки с липсващ F-number (породен от разните ръчни "аналогови" обективи като МС Пеленг 8мм :))
Освен това и няколко бъгфиксчета. При използване на Sort by exif date в 0.3.0 и създаване на нова галерия, обикновено програмата гърмеше. Освен това, ако входящите картинки са малки (не се налага преоразмеряване), понякога в резултат се получаваше празна галерия. В някои случаи, ако е включен Auto-save при създаване на нов проект, докато е отворен някой друг, можеше да се случи старият да се затрие. Оправих и един доста досаден бъг, който се проявяваше рядко (по време на генериране на галерията) и водеше до замръзване или гърмежи. Като цяло съм много доволен колко стабилна е новата версия :)
Сега бягайте да download-вате!
Публикувано в категория Open source -- 6 Nov 2012, 19:06, 2 коментара --
View in English

AGG 0.3.0
След година и половина мързел, най-после успях да пусна нова версия на програмката - 0.3.0 :)
Какво ново:
- Unicode support. Поддържат се кирилици, маймуници и всякакви подобни езици (и за имена на файлове, и за имена на галерии, и за заглавни картинки - абе всичко).
- Покрай предходното: вече се поддържат и преводи на интерфейса на произволни езици. Аз други езици не знам, така че добавих тестов превод на програмката на
Български (примерно). Ако някой му се занимава да преведе програмката (нищо работа - 400 реда са) на друг език - да ми пише :)
Ако сте на компютър, на който интерфейса му е на БГ, би трябвало при първото стартиране, AGG да ви изведе приветливо съобщение на роден език и да ви пита, дали все пак не искате английски :) - Поддръжка за масово прехвърляне на Exif (от една директория със снимки в друга)
- Опция auto-save
- Gamma-aware resizing. Принципно всички програми (това включва и такива като GIMP и PhotoShop) не си правят труда да конвертират картинките от sRGB до линейно-RGB пространство (т.е. да правят гама-декомпресия). При което, ресайзваниците са математически не съвсем точни. Графичните гурута реват, че е голямата работа [детайли], но де-факто разликата между старото и новото е съвсем малка.
- Подобрени Exif статистики (сравнете: 0.2.5 срещу 0.3.0)
- Подобрени HTMLта (като размер) и фикснати бъгове.
- Имаше един бъг, при ресайзване на картинки, съдържащи 100% бяло в плътни области (преекспонирано небе да речем). Заради неправилно закръгляне, се образуваха решеткообразни артефакти с (254, 254, 254) бяло, вместо (255, 255, 255). Ето и и снимка със стария ресайзер. Е, може би не виждате дефектите - и аз не ги виждам на 9 от 10 монитора - което беше и причината да забележа бъга чак сега :)
- Ползва се Exiv2 вместо libexif за четене на Exif данните (с което се хващат една идея повече тагове, особено от специфичните за производителите).
- И още една камара подобренийца. Новата версия трябва да дава в Help->About: "Version 0.3.0 β Official".
За финал, малко добри новинки: руснакът, който беше направил клонинга на AGG от предходния пост се оказа разбран. След като си разменихме малко мейли, се съгласи да не се съдим и публикува на сайта както съобщение, че продуктът му е базиран на AGG, така и оферта да даде сорс-кода на всеки желаещ (което и направи, когато аз му го поисках). This was a triumph! Победа на отворения код!
Публикувано в категория Open source -- 17 May 2012, 20:06, 0 коментара --
View in English

AGG и GPL
Както се оказа, на нечия умна глава й дошла идеята да си присвои кода на AGG-то, да му турне copy-protection код и да го продава по $30 парчето. GPL е за загубеняците, които си нямат друга работа. Дами и господа, представям ви: SoftOrbits's Html Web Gallery Creator.
За пример: Галерийка с моята програма, и с "техния" продукт.
Фирмата е изключително потайна, не пише никакви контакти и детайли къде се помещават и оперират. С помощта на един добър човек вече пратих Cease and Desist писмо на руснака, сега чакаме развитие.
Публикувано в категория Open source -- 7 Jan 2012, 01:05, 0 коментара --
View in English

Нещата напоследък...
... защото се случиха няколко яки работи.
Организирахме с фирмата първия семинар по фотореалистична графика в България. Такова събитие не се беше случвало никога, така че не знаехме какво да очакваме и организацията беше яко ad hoc. Мисля, че стана добре, но още не сме разгледали feedback формите (хехе) :)
После, леко надградих ucbench, като добавих поддръжка за XOP инструкции. Те се явяват нещо като допълнителна ортогонализация на SSE, и добавят някои способности от стандартните x86 инструкции, които много отдавна трябваше да са влезли в SSE - векторни целочислени хоризонтални събирания, побайтови пермутации, cmov, и — най-важното в случая — векторен вариант на ROR/ROL инструкциите. Централна част в кода на ucbench е SHA-1 алгоритъма, който, от своя страна, прави цели 3 побитови ротации на рунд, които досега в SSE варианта се "емулираха" чрез SHL, SHR и OR. Адски неефективно, отделно пък заемаха по един временен регистър! С добавянето на VPROTD (което прави векторно ROR или ROL според аргумента), производителността се подобри с цели 45-50%.
Интересен е моментът как се тества такъв код без да имаш необходимия процесор (Булдозерите все още не бяха излезли). Сблъсках се с това нещо, наречено AMD SimNow, което, освен, че е ужасно бавно, е и недобре документирано - смятам да напиша един кратък tutorial тази седмица (аз лично прекопах интернет в търсене на такъв - сега поне може да съм от полза някому :)).
Третото готино нещо е, че отново чета курса "3D графика и трасиране на лъчи" във ФМИ. Пак студенти, търчане за проектори, организационни неща - мазохизъм за ценители :)
Публикувано в категория Open source -- 16 Oct 2011, 23:13, 0 коментара

Спортна полуседмица
Напоследък се получи нещо като benchmark седмица - разцъквах по два бенча едновременно :)
UCBench 2011
Най-сетне пуснах нова версия :) Сайтът е http://anrieff.net/ucbench2011.
Програмата продължава да симулира разбиване на парола на криптирано RAR-че, само че вече 8-12% по-бързо. И освен това има по-добра поддръжка на засичане на CPU скоростта. Изравнени са скоростите на Linux/OSX билдовете с Windows варианта. Има и една камара други малки фиксчета по сайта и програмката.
Fract Benchmark for Android
Бях набарал това въведение за подкарване на SDL върху Android устройства, но се оказа лош водач, загубих си няколко часа да следвам тази неподходяща насока:
1) Така компилираното SDL не работи на Android 2.2, липсват му /dev/tty0 и някои други устройства;
2) Не може да се генерира .apk, а трябва да се копира върху устройството и да се пуска ръчно от конзола (което на всичкото отгоре иска root-нат телефон);
Правилния подход е да си изтеглите последното SDL 1.3 от Mercurial-ското репозитори. Там има едно чудесно README.android, което описва всичко много добре. Не изисква писане на никаква Java :) - ползвате си добрите стари C/C++ сорсове, вкарвате ги в един "фалшив" Java+JNI проект, натраквате две команди и имате .apk. Лесно и просто.
Така първоначално fract-а тръгна на Android - ето една снимка:
По някое време дизасемблирах малко object код и видях каква колосална глупост съм направил - компилаторът е бил настроен да генерира soft-float, понеже няма гаранция, че ARM-чето ще е оборудвано с FPU. Е, по-новите телефони имат (даже имат VFP, което е еквивалент на x87, и NEON, което е еквивалент на SSE1). За да компилирате NDK-частта на проекта (т.е. C/C++ кода) с FPU трябва да смените малко архитектурата - ползвате следната build команда:
ndk-build TARGET_ARCH_ABI=armeabi-v7a
Препоръчително е и да добавите едно V=1 накрая за да видите какво точно се подава към компилатора. -mfpu=vfp е съществената опцийка към GCC.
Двата билда (non-FPU и FPU), както и инструкции как да подкарате бенчмарка на своя android телефон (или таблет) можете да видите тука: http://anrieff.net/pocketfract.
За който не разбира английски, да цъкне тук.
Малко резултати: HTC Desire / Android 2.2 изкарва ~5.5 кадъра в секунда. За сравнение, Asus Еее PC 901, със същия фракт и --no-sse, --no-mmx, --no-mmx2, --xres=400 и --cpus=1 дава към 11.7 FPS. Засега x86 печели :)
Публикувано в категория Open source -- 19 Jan 2011, 10:11, 0 коментара --
View in English

AGG 0.2.5
Пуснах нова версия на AGG. Ето какво ново в нея:
* Има билдове за 64-битови OS (Win & Linux);
* Фикснат е един важен (но труднопостижим) бъг, при който програмката забива. Когато обработвате галерия на много нишки (примерно, два 4-ядрени Nehalem Xeon-а, сиреч 16 "ядра"), работната памет се фрагментира до безобразие, в следствие на което malloc() спира да работи (връща NULL) - не може да заеме големите непрекъснати региони от памет, необходими за картинките. В 0.2.5, AGG вече пази картинките на много отделни сегментчета;
* Разни оптимизации — за четене/писане на JPG-и вече ползвам libjpeg-turbo; ускорен е и Area resizer-а. Вижте по-долу за бенчмаркове;
* Оправени са няколко проблема в GUI-то за Mac OS X;
* По-мощен Batch Rename (поддържа Python-ски slice-ове и други благинки);
* Има Adjust exif date (фисква неверни часовници в EXIFите на колекция снимки);
* Добавен е един малък benchmark.
За скоростта - оптимизациите по libjpeg и ресайзера донякъде се унищожават от усложненото боравене с паметта на снимките (и по-голямата неразбория, следваща от фрагментацията на данните). Реално, на двуядрен лаптоп успях да замеря около 12% подобрение (галерия от 325 снимки по 8 MPix се "смачква" за 2m 11s - спрямо 2:28 при 0.2.4). На шестядрената машина подобрение нямаше, но там и без това bottleneck-ът е при харддиска ;)
Публикувано в категория Open source -- 2 Dec 2010, 01:40, 0 коментара --
View in English