новый модуль - user gallery

Главные вкладки

Аватар пользователя NeoChapay NeoChapay 18 октября 2009 в 23:24

Итак, написал модуль пользовательской галереи, что в наличии:

  • изображения не ноды
  • изображения автоматом пережимаются в максимальные размеры 640*640
  • автоматически определяется уникальность изображения (по md5 sum)
  • при удалении изображения оно удаляется физически
  • при удалении альбома все изображения альбома удаляются физически
  • обложка альбома устанавливается из изображений альбома или автоматом - первое загруженное изображение
  • проверка валидности изображения по mime

это пока из реализованного
из не реализованного:

  • нет коментариев
  • нет приватных и "18+" изображений
  • загружаются только jpeg изображения
  • нет функций поворотов и так далее

так как модуль используется на публичном сайте пока увы не смогу его выкладывать. Желающие могут посмотреть работу на http://ostudio.org/ugallery или обратится лично ко мне за кодом.

Комментарии

Аватар пользователя Ромка Ромка 19 октября 2009 в 0:06

А зачем нужен такой модуль? Ведь связкой CCK + Filefield + Imagefield + ImageCache + Views можно собрать галерею любой сложности.

"NeoChapay" wrote:
изображения не ноды

Почему? Отсюда и это следует:
"NeoChapay" wrote:
нет коментариев

и это:
"NeoChapay" wrote:
нет приватных и "18+" изображений

Эта фишка обычным CCK-виджетом делается + небольшой темизацией
"NeoChapay" wrote:
изображения автоматом пережимаются в максимальные размеры 640*640

А если мне 800 на 600 надо? Или какое-нибудь другое экзотическое разрешение, под смартфон например? Imagecache тут нужен.
"NeoChapay" wrote:
нет функций поворотов и так далее

Imagecache_actions

Только не надо мне рассказывать о том, что связка модулей, которую я предложил слишком тяжелая, это не так.

П.С. А к комментам на вашем сайте доступа получить не удалось.

Аватар пользователя NeoChapay NeoChapay 19 октября 2009 в 0:11

«Почему? Отсюда и это следует: нет коментариев»
ну это всё поправимо. Не сделал нодами потому что в моём данном случае это более удобно.
«нет приватных и "18+" изображений»
Это будем завтра Smile
«А если мне 800 на 600 надо? Или какое-нибудь другое экзотическое разрешение, под смартфон например? Imagecache тут нужен.»
Всё сразу делаю через gd чем через Imagecache - а другие размеры можно будет через админку.
«Только не надо мне рассказывать о том, что связка модулей, которую я предложил слишком тяжелая, это не так.»
тут конкретная задача и всё что вы предложили избыточно
«П.С. А к комментам на вашем сайте доступа получить не удалось.»
Только для зарегеным Sad

Аватар пользователя Demimurych Demimurych 19 октября 2009 в 0:51

"Ромка" wrote:
А зачем нужен такой модуль? Ведь связкой CCK + Filefield + Imagefield + ImageCache + Views можно собрать галерею любой сложности.

ну так уж и любой? Wink

"MDinc" wrote:
И затем помереть при большой посещаемости

это всего лишь вопрос ресурсов. Верно? Если их достаточно то почему бы и нет?

"NeoChapay" wrote:
Итак, написал модуль пользовательской галереи, что в наличии:

полезности пока в модуле 0.0
потому как как сказали уже выше, не напрягаясь делается лучше связкой модулей. В мифические - "нам это не подходит" как то в рамках того что сделано - не верится.

Чем не подходит? примеры того что есть в твоем модуле и чего нет в связке модулей? Экономия ресурсов? При той посещаемости и качестве сервиса что там сейчас есть, "стандартные" решения справились бы не хуже.

Аватар пользователя Nikit Nikit 19 октября 2009 в 2:17

"MDinc" wrote:
И затем помереть при большой посещаемости
Ваш путь только для хом пейдж

работает такая связка нормально. не хуже любой другой "супермега_галерки".
"узкие" решения, заточенные под одну задачу сравнению не подлежат.

Аватар пользователя glu2006 glu2006 19 октября 2009 в 10:26

Demimurych wrote:
Ну так уж и любой?

Одобряю полностью, укзанная Ромкой связка работает как часы при любой посещаемости, поскольку для оправдания этого процесса достаточно просто знать как работает imagecache он тоже один раз создает изображение и потом просто его показывает хоть 1-му пользователю, хоть 1000-му изображение уже на хосте, вьюсы кешируются. (если при посещаемости в 2-3.000 уников жаль денег на VPS то вперед на изобретение велика)

Галлерею можно собрать повторюсь за Ромкой ЛЮБОЙ сложности. Для примера или спора ради (только надо цену спора обсудить Wink ) - вы выбираете любую галлерею на Jquery которую захотите, а я делаю ее демо на друпале с помощью CCK + Filefield + Imagefield + imagecache + views. Из самописа будет только перекрыт шаблон вьюхи чтоб задать нужную структуру HTML для обработки галлереи Java скриптом.

Аватар пользователя Demimurych Demimurych 19 октября 2009 в 12:29

"Nikit" wrote:
работает такая связка нормально. не хуже любой другой "супермега_галерки".
"узкие" решения, заточенные под одну задачу сравнению не подлежат.

Да. Но только простите автор как раз предоставил "узкое решение".

так как? в счет или не в счет?

Аватар пользователя Nikit Nikit 19 октября 2009 в 13:40

Demimurych wrote:
"Nikit" wrote:
работает такая связка нормально. не хуже любой другой "супермега_галерки".
"узкие" решения, заточенные под одну задачу сравнению не подлежат.

Да. Но только простите автор как раз предоставил "узкое решение".

так как? в счет или не в счет?


прочтите внимательно кому я писал сообщение, не автору поста.

Аватар пользователя Demimurych Demimurych 19 октября 2009 в 12:41

"glu2006" wrote:
Одобряю полностью, укзанная Ромкой связка работает как часы при любой посещаемости,

Ты наверное имел ввиду не любой а только при той на которую хватит ресурсов сервера.
Очевидно, что написанное "узкое решение" на тех же ресурсах будет работать обрабатывая большее количество запросов. Будешь с этим спорить?

"glu2006" wrote:
Галлерею можно собрать повторюсь за Ромкой ЛЮБОЙ сложности.

И тут ты тоже не вполне прав. Если бы было бы так, то сам views бы не развивался верно? Зачем развиваться если и так можно построить все что хочешь любой сложности. Wink

Не ужели ты хочешь поспорить с тем, что правильно написанное специальное решение будет работать быстрее чем связка модулей?

Конечно часто, в том нет необходимости.

Тут очень хорошее сравнении с серийными автомобилями и формулой один. Связка модулей это серийный автомобиль. Не исключено что хороший. Но он никогда не поедет так же быстро как формула. Но и на формуле по улицам не ездят.

Если вернуться к топикообразующей теме, то тут бесспорно, смысл существования такого модуля как он есть сейчас неясен. Разве что джаст фор фан.

Аватар пользователя glu2006 glu2006 19 октября 2009 в 13:12

Demimurych wrote:
Ты наверное имел ввиду не любой а только при той на которую хватит ресурсов сервера.
Очевидно, что написанное "узкое решение" на тех же ресурсах будет работать обрабатывая большее количество запросов. Будешь с этим спорить?

Буду Smile что делает узкое решение?
При заливке обрабатывает картинку и пишет ее на хост и в базу.
Поскольку никакого кеша нет при каждом обращении к странице у нас выполняется SQL который вытягивает данные, далее эти данные необходимо размотать, завернуть в HTML и отдать конечному пользователю - будете спорить что это быстрее чем взять данные из кеша вьюсов? Smile

при отсутствии кеша получаем то-же самое, что и узкое решение, делаем запрос в БД получаем данные, разматываем, оборачиваем, выводим. Процесс фактически один и тот-же по ресурсоемкости.

В чем разница, так это только в изначальном размере самописа против вьюсов (по объему и по занимаемой памяти)+ то что это один модуль а к вьюсам еще надо CCK и т.д. но мы по сути создаем сайт в котором в будущем с минимальными затратами можно видоизменять все что угодно. А на самописах это согласитесь не очень просто (я про минимальные затраты).
Самопис = продаже струйника в 1996 году Smile один раз продал и потом всю жизнь с этого кормишься.

Demimurych wrote:
И тут ты тоже не вполне прав. Если бы было бы так, то сам views бы не развивался верно? Зачем развиваться если и так можно построить все что хочешь любой сложности. ;)

Вы просто посмотрите в какую сторону развивается вьюс Smile они оптимизировали запросы в БД, они улучшили пользовательский интерфейс, они улучшили работу с аргументами, добавили множество раздельных настроек для пейджа и блока + добавили огромную шаблонизацию начиная от общего вида вьюса и заканчивая темизацией отдельного поля. Поэтому и говорю что любой сложности, поскольку правила генерации HTML я могу задать такие какие хочу используя шаблоны.

Аватар пользователя NeoChapay NeoChapay 19 октября 2009 в 13:03

Ещё раз повторяю что модуль был сделан как простое лёгкое решение. Пользователи сайта просили как на вконтакте и чтобы не ноды - неудобно говорят когда всё в кучу. Так же требывалось проверка на уникальность изображений и физическое удаление файлов при их удалении в альбоме. Делалось всё ради просто так и как можно проще так как в drupal api не очень сильно разбираюся

Аватар пользователя Ромка Ромка 19 октября 2009 в 13:15

"Demimurych" wrote:
Ты наверное имел ввиду не любой а только при той на которую хватит ресурсов сервера.
Очевидно, что написанное "узкое решение" на тех же ресурсах будет работать обрабатывая большее количество запросов. Будешь с этим спорить?

Я очччень сильно сомневаюсь, что автор "узкого решения" знает API Друпала лучше чем разработчики Вьюс и ССК и может написать модуль, работающий быстрее. Откуда вообще уверенность, что ССК и Вьюс работают медленнее самописного решения? Вы проводили сравнительные тесты? Вы хотя бы сравните запросы, генерируемые этим "узким" решением и запросы генерируемые Вьюсами, уверяю вас, последний генерирует максимально оптимизированные запросы.

"Demimurych" wrote:
Тут очень хорошее сравнении с серийными автомобилями и формулой один. Связка модулей это серийный автомобиль. Не исключено что хороший. Но он никогда не поедет так же быстро как формула. Но и на формуле по улицам не ездят.

Не в тему сравнение. Вообще не люблю все эти "а вот давайте сравним разработку сайтов со строительством [автомобилестроением, медициной, и т.д]". Если вы не хотите использовать модули типа ССК, Вьюс, Вотинг АПИ, и т.п., то может быть и использование его API вам кажется лишним? Зачем тогда вообще Друпал использовать? Если использовать вашу терминологию, то да, серийный автомобиль никогда не поедет также быстро как авто формулы один, но и авто формулы один не будет делаться на стандартной платформе типа Друпала. Еще раз подчеркну, я более чем уверен, что связка ССК + Вьюс будет работать быстрее самописного решения, если его не делает профессионал, детально знающий процессы происходящие внутри ядра Друпала и его API.

Аватар пользователя Demimurych Demimurych 19 октября 2009 в 13:29

"glu2006" wrote:
Буду Smile

а давай )))

"glu2006" wrote:
Буду Smile что делает узкое решение?

То что представил нам тут на суд? или вообще?

"glu2006" wrote:
При заливке обрабатывает картинку и пишет ее на хост и в базу.
Поскольку никакого кеша нет при каждом обращении к странице у нас выполняется SQL который вытягивает данные, далее эти данные необходимо размотать, завернуть в HTML и отдать конечному пользователю - будете спорить что это быстрее чем взять данные из кеша вьюсов? :)

Ты пытаешься мне сказать что все узкие решения такие? Вот те на.
views это универсальный иснтрумент, созданный для того чтобы сэкономить время за счет ресурсов сервера. Даже просто взяв сам вьюс, и удалив от туда не нужный мне код, который лично я не использую, я уже могу получить инструмент быстрее самого vews и который уже можно назвать узким решением верно?

Никто мне как разработчику, не мешает построить свою систему кеширования, которая будет копией вьюса. Не говоря уже о том, что там где применяются узкие решения, работают люди которые понимают, что кешировать нужно не так. А использовать фронтенды и бекенды с проксированием. Которые будут значительно эффективнее кеша views. В результате чего сам код кеша views ложится мертвым никому ненужным грузом.

"glu2006" wrote:
В чем разница, так это только в изначальном размере самописа против вьюсов (по объему и по занимаемой памяти)+ то что это один модуль а к вьюсам еще надо CCK и т.д. но мы по сути создаем сайт в котором в будущем с минимальными затратами можно видоизменять все что угодно. А на самописах это согласитесь не очень просто.

Не вполне.
Самописный код, отвечает четко поставленной задаче, и лишён необходимости делать код универсальным. От чего и выигрыш в производительности. если конечно программист не дурак.
Я не спорю, с идеей, что связки модулей это эффективный способ быстро (сейчас и в будущем) решать какой то круг задач.
Я всего лишь говорю о том, что существуют задачи, когда производительности этой связки недостаточно чтобы ее применять. И что в данном случае, предпочитают заплатить программисту, который будет поддерживать код, но получать высокопроизводительное решение.
Ну и еще есть третий паталогический случай, когда сам программист любит считать миллисекунды выигрыша. И там его затраченное время на код, совершенно не играет для него никакой роли.

"glu2006" wrote:
Вы просто посмотрите в какую сторону развивается вьюс Smile они оптимизировали запросы в БД, они улучшили пользовательский интерфейс, они улучшили работу с аргументами, добавили множество раздельных настроек для пейджа и блока + добавили огромную шаблонизацию начиная от общего вида вьюса и заканчивая темизацией отдельного поля. Поэтому и говорю что любой сложности, поскольку правила генерации HTML я могу задать такие какие хочу используя шаблоны.

Да. И зачем они это делали? Неужели от того что им делать больше нечего? Наверное потому, что производительность этого чуда часто оставляла желать лучшего. Верно?

Аватар пользователя Demimurych Demimurych 19 октября 2009 в 13:50

"Ромка" wrote:
Я очччень сильно сомневаюсь, что автор "узкого решения" знает API Друпала лучше чем разработчики Вьюс и ССК и может написать модуль, работающий быстрее.

Ну простите. Это уже из области эмипирических рассуждений.
Человек слабо владуеющий api полезет скорее копаться в views и CCK потому что так проще и бытсрее. Чем писать свой модуль.
Тот кто полезет писать для заказчика узко направленное решение понимает сколько на это уйдет времени и сколько это стоит денег.

"Ромка" wrote:
Я очччень сильно сомневаюсь, что автор "узкого решения" знает API Друпала лучше чем разработчики Вьюс и ССК и может написать модуль, работающий быстрее. Откуда вообще уверенность, что ССК и Вьюс работают медленнее самописного решения? Вы проводили сравнительные тесты? Вы хотя бы сравните запросы, генерируемые этим "узким" решением и запросы генерируемые Вьюсами, уверяю вас, последний генерирует максимально оптимизированные запросы.

От простого - сам код views и cck требует бОльшего количества памяти для своей работы чем узко заточеный код.
До более сложного, посмотрите как CCK формирует дополнительные поля. И посмотрите как это же делается при формировании своего собственного типа материала. Не кажется ли Вам что последний код, ЗАНЧИТЕЛНЬО быстрее выполнится?
Для любителей померится запросами, посмотрите просто на количество запросов к серверу. Которые генерирует CCK при формировании материала.

"Ромка" wrote:
Вьюсами, уверяю вас, последний генерирует максимально оптимизированные запросы.

это не очень верно.
и вот почему. Простой пример, mysql сервер, это сервер который разрабатывется высоко проффесиональными разработчиками. Которые только и занимаются тем, что строят БД. В этом сервере есть такая штука как оптимизатор запросов. Который что делает? Верно пытается выполнить запрос таким образом чтобы затратить меньшее количество времени. И часто отлично справляется со своей задачей. Но далеко не всегда.
Разработчик узкого решения, всегда проверит эффективность работы своих запросов. И часто оптимизирует их лучше автомата.

"Ромка" wrote:
Не в тему сравнение. Вообще не люблю все эти "а вот давайте сравним разработку сайтов со строительством [автомобилестроением, медициной, и т.д]". Если вы не хотите использовать модули типа ССК, Вьюс, Вотинг АПИ, и т.п., то может быть и использование его API вам кажется лишним? Зачем тогда вообще Друпал использовать? Еще раз подчеркну, я более чем уверен, что связка ССК + Вьюс будет работать быстрее самописного решения, если его не делает профессионал, детально знающий процессы происходящие внутри ядра Друпала и его API.

еще раз повторю, чтобы снять некоторое непонимание.
Я не ратую за использование исключительно самописного кода. Я всего лишь говорю о том что есть случаи когда он лучше чем универсальный.
Так собственно и я не говорю о том, что любой самописный код лучше универсального.
И конечно же никогда не дам задание писать такой код программисту который не показал мне что он может.

Конечно сравнения с машинами это отчасти софистика. Но по моему очень наглядно дает понять разницу.
Серийное авто может обслуживать и один человек.
формулу никогда, там нужна целая группа высококлассных специалистов.

"Ромка" wrote:
но и авто формулы один не будет делаться на стандартной платформе типа Друпала

Ну в общем да. согласен. Тогда я просто уберу слово формула, и заменю его раллийным автомобилем. Который в любом случае едет лучше, и сделан на базе серийного ))