|
|
|
Делать все методы статическими или класс абстрактным?
|
|||
|---|---|---|---|
|
#18+
Shitbox2, вам же сказали в классах не должно быть get/post Код: php 1. 2. замените на Код: php 1. 2. хотя на самом деле мы прикапываемся к мелочам, в больших проектах или в серьезных фирмах за это бы уши оторвали. и не могли бы вы больше слушать свою любимую музыку. ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 22.11.2012, 10:14 |
|
||
|
Делать все методы статическими или класс абстрактным?
|
|||
|---|---|---|---|
|
#18+
Ок. Заменил. К каким еще мелочам можно прикопаться? Как бы такую штуку построил крутой кодер? А суть штуки в том, чтобы облегчить разработчикам работу с картинками (аватарки, форумы, комментарии, посты в блогах и проч.), открытый же проект делаю, елки-палки :) ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 22.11.2012, 11:27 |
|
||
|
Делать все методы статическими или класс абстрактным?
|
|||
|---|---|---|---|
|
#18+
Shitbox2Ок. Заменил. К каким еще мелочам можно прикопаться? Как бы такую штуку построил крутой кодер? А суть штуки в том, чтобы облегчить разработчикам работу с картинками (аватарки, форумы, комментарии, посты в блогах и проч.), открытый же проект делаю, елки-палки :) для меня идеальный подключаемый модуль - это такой класс, который одной строкой инклудится, одной строкой создаётся интерфейс(экземпляр класса для работы), одной строкой оглавляется скрипт в клиентской части, одной строкой скрипта (а то и вообще по селектору css) все выбранные элементы подменяются на нужные мне. К этому всему прилагается файл css для придания нужного внешнего вида. Всё остальное (размер аватар, размер сохраняемых картинок, исходящий формат, библиотека обработки и т.д.) в конфигах. любой параметр может быть изменён установкой соотвествующего параметра класса. В данном случае, класс должен просто предусматривать флаги convert, resize, avatar. А функция обработки одна (например make() или process(), понятно дело подгружающая 3 приватных метода). Тогда ресурс вообще хранить не прийдётся. Инициализировал, задал параметры, обработал, удалил. И Вам легче, и программеру, который юзать бибилиотеку будет. Я не крутой кодер, но моё видение задачи именно такое :) ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 22.11.2012, 11:51 |
|
||
|
Делать все методы статическими или класс абстрактным?
|
|||
|---|---|---|---|
|
#18+
P.S. Ах да... забыл... ещё он не должен менять обычного поведения скриптов. То есть, не хорошо делать например move_uploaded_file, так как после Вашей обработки картинок, может последовать следующая (уже не Ваша), а это приведёт к ошибке (так как в _FILES будет записано, что такой файл был загружен, а физически он уже не там). Нельзя жёстко привязывать, что клиентский скрипт должен обязательно отправить данные именно в Ваш серверный скрипт. Просто часто надо до сохранения файлов провести какие-нить валидации и типа того (например когда аватарку может только зареганый пользователь создавать), иначе сервак любой желающий загадить сможет. Можно было бы выделить отдельный файл для валидации, но если модуль встраивается в Yii например, начнутся проблемы с его подгрузкой. Но это опять же не критично... а просто хорошо бы. ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 22.11.2012, 12:10 |
|
||
|
Делать все методы статическими или класс абстрактным?
|
|||
|---|---|---|---|
|
#18+
Програмёр, Идеальным являеться модуль который как черный ящик. Ему что то передал (чуствуете разницу с "он что то взял") и получил от него что то другое обработаное. И при этом ни мы не можем никак влезть в его внутрености (кроме конфигурации), и ни он не может покинуть свою черную коробку. ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 22.11.2012, 12:37 |
|
||
|
Делать все методы статическими или класс абстрактным?
|
|||
|---|---|---|---|
|
#18+
РенатПрограмёр, Идеальным являеться модуль который как черный ящик. Ему что то передал (чуствуете разницу с "он что то взял") и получил от него что то другое обработаное. И при этом ни мы не можем никак влезть в его внутрености (кроме конфигурации), и ни он не может покинуть свою черную коробку. В данном случае чёрного ящика не представляю, по выше описанным причинам (например предпроверка картинок). Если бы модуль был только серверный, а сейчас он клиент-сервер. это уже сложнее :) ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 22.11.2012, 12:45 |
|
||
|
Делать все методы статическими или класс абстрактным?
|
|||
|---|---|---|---|
|
#18+
Насчет «размер аватар, размер сохраняемых картинок, исходящий формат, библиотека обработки и т.д. в конфигах» А если библиотека используется несколько раз с разными целями? Например, для создания аватарок, потом для обработки фоток в комментах, получается конфиги нужно переписывать? Второе сообщение, вообще, темный лес для меня. Как сделать без move_uploaded_file? Как тогда лучше настроить отправку из клиентского скрипта? Сейчас возможны такие случаи взаимодействия: - передача картинки для обработки - передача картинки вместе с данными (в случае если картинки не загружаются сразу на сервер, а ждут отправки вместе с формой) - передача данных для обновления - передача порядка расположения картинок - передача команды на удаление - запрос на получение списка картинок Сейчас все отсылается одному скрипту с управляющими параметрами в GET. Имя скрипта нужно сделать в конфиге js, абсолютно согласен. А как быть с управляющими параметрами? Просто описать их в примечании, чтобы разработчик мог настроить свой скрипт? Лучше GET или POST их передавать? P.S. Хотелось бы взглянуть на скрипты, приближенные к идеальным (особенно php), а то как-то плаваю сейчас ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 22.11.2012, 12:50 |
|
||
|
Делать все методы статическими или класс абстрактным?
|
|||
|---|---|---|---|
|
#18+
ПрограмёрВ данном случае чёрного ящика не представляю, по выше описанным причинам (например предпроверка картинок). Если бы модуль был только серверный, а сейчас он клиент-сервер. это уже сложнее :) чето то я текст полностью не читал, о предпроверки где то видимо упустил =) может я конечно не то понял, но черный ящик может все сам проверить и плюнуть exception в случае чего. Аргуент у него - имя темп файла (черному ящику то какая разница, тем файл с картинкой или нет? едиснвтено его надо проверить до черного ящика реально ли он загружен) Shitbox2, откройте для себя фреймворки и mvc. Современые фреймворки: Yii, Zend, Symfony etc делают занимаются роутингом автоматически. Единствено вам при отправке надо будет поменять адрес: http:.....ru/avatar/upload к примеру что запустит автоматически uploadAction у класса AvatarController. ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 22.11.2012, 13:21 |
|
||
|
Делать все методы статическими или класс абстрактным?
|
|||
|---|---|---|---|
|
#18+
Shitbox2Насчет «размер аватар, размер сохраняемых картинок, исходящий формат, библиотека обработки и т.д. в конфигах» А если библиотека используется несколько раз с разными целями? Например, для создания аватарок, потом для обработки фоток в комментах, получается конфиги нужно переписывать? Второе сообщение, вообще, темный лес для меня. Как сделать без move_uploaded_file? Как тогда лучше настроить отправку из клиентского скрипта? Сейчас возможны такие случаи взаимодействия: - передача картинки для обработки - передача картинки вместе с данными (в случае если картинки не загружаются сразу на сервер, а ждут отправки вместе с формой) - передача данных для обновления - передача порядка расположения картинок - передача команды на удаление - запрос на получение списка картинок Сейчас все отсылается одному скрипту с управляющими параметрами в GET. Имя скрипта нужно сделать в конфиге js, абсолютно согласен. А как быть с управляющими параметрами? Просто описать их в примечании, чтобы разработчик мог настроить свой скрипт? Лучше GET или POST их передавать? P.S. Хотелось бы взглянуть на скрипты, приближенные к идеальным (особенно php), а то как-то плаваю сейчас 1. Поэтому и говорю, должна быть возможность менять поведение модуля заданием нужных атрибутов экземпляру класса... + в таком случае можно как-то покрутому соорудить загрузку конфигов (хотя не знаю. 10 конфигов - это как-то не круто). Ещё при этом (при возможности менять поведение) хорошо бы пакетную обработку сделать (или метод, который позволил бы эту картинку выгрузить и следующую картинку загрузить в этот же экземпляр для обработки). 2. Можно использовать например какую-нить copy. 3. Всё лучше отправлять одним методом (или пост или гет). В данном случае наверное POST (ведь файлы отправляются). 4. По поводу идеальных скриптов, даже не знаю что сказать... Под рукой таких нету :) Хотя в принципе любая модульная хорошая система так работает (только более глобально). Например тот же fckeditor (только js часть): строка инклуда, файл настройки, файл внешнего вида (в каких-то версиях в одном с настройкой), строка для замены textarea на продвинутые. в нём встраиваемый модуль ckfinder который грузит файлы на сервер. У него в конфигах по-моему предусматривается проверка переменных (своего рода валидация на серваке и всё такое). ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 22.11.2012, 13:31 |
|
||
|
Делать все методы статическими или класс абстрактным?
|
|||
|---|---|---|---|
|
#18+
Меняю входные данные на $param Всего скрипт может получать 3 типа данных $_GET['type'] (получает всегда) $_GET['id'] $_POST['sort'] Как понимаю, в качестве $param лучше передавать что-то одно, например, POST, тогда все управляющие запросы так же нужно в POST запихнуть. Получится Код: php 1. 2. 3. 4. 5. Логика верна? ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 22.11.2012, 13:51 |
|
||
|
Делать все методы статическими или класс абстрактным?
|
|||
|---|---|---|---|
|
#18+
Ренатможет я конечно не то понял, но черный ящик может все сам проверить и плюнуть exception в случае чего. Аргуент у него - имя темп файла (черному ящику то какая разница, тем файл с картинкой или нет? едиснвтено его надо проверить до черного ящика реально ли он загружен) я не зареганый хакер (сидящий с динамического ip), который хочет убить сервак (занять например все ресурсы). Я знаю, что предпросмотр картинки невозможен без загрузки на сервак. нахожу, куда отправляется файл, винчу свою форму, в которую вкладываю файл. Отправляю его этому скрипту. Тогда скрипт проверив, что данный файл пришёл, сохраняет его в директорию для предпросмотра. человечек отрубается от сети, подрубается назад, и повторяет операцию. Что произойдёт на серваке через 30 минут - час? Правильно, никто уже не сможет отправить картинку со своим комментом например, так как места не будет уже. Сайт конечно не убит, но работает с глюками. так что такой простой проверки явно недостаточно. :) Ещё и хорошо бы картинку на серваке по определённому принципу именовать (это тоже должен быть атрибут класса). Тогда можно избежать засорения папки аватарками одного юзера, если при отправке дать программеру на серваке задать определённый шаблон имени (например id-юзера_avatar). Так что нет... явно чёрный ящик тут не прокатит :) Он должен быть чёрным, но "с дырочками, ручками для переноски" и всё такое :) ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 22.11.2012, 13:52 |
|
||
|
Делать все методы статическими или класс абстрактным?
|
|||
|---|---|---|---|
|
#18+
На счет фреймворков, Yii, Zend, Symfony... Я же не знаю, чем пользуется тот человек, кто использует этот плагин или библиотерку или как его еще назвать. Чем бы он не пользовался ему должно быть максимально удобно взять и прикрутить ее хоть к чистому ПХП, хоть к Зенду. К сожалению, С ПХП не очень понимаю, как сделать универсальные вещи. С JS проще. написал плагин к JQ и ОК. На счет хакера. Думаю, это забота движка, отслеживать, чтобы картинки могли только зарегистрированные пользователи загружать. Это в примере только все для всех. Т.е. для незареганного просто не подключится класс. Опять же, клиентский скрипт должен отслеживать это и выполнять колбек функцию исходя от типа ошибки сервера. Ух... Сколько работы-то ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 22.11.2012, 14:03 |
|
||
|
Делать все методы статическими или класс абстрактным?
|
|||
|---|---|---|---|
|
#18+
Shitbox2Меняю входные данные на $param Всего скрипт может получать 3 типа данных $_GET['type'] (получает всегда) $_GET['id'] $_POST['sort'] Как понимаю, в качестве $param лучше передавать что-то одно, например, POST, тогда все управляющие запросы так же нужно в POST запихнуть. Получится Код: php 1. 2. 3. 4. 5. Логика верна? да. :) кстати в таком модуле хотелось бы видеть возможность обработки ещё и серверных картинок (скажем, когда я ранее 10 картинок загрузил на сервак, а теперь из одной хочу аватар сделать). мне такая функция кажется востребованной... :) просто как предложение. ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 22.11.2012, 14:04 |
|
||
|
Делать все методы статическими или класс абстрактным?
|
|||
|---|---|---|---|
|
#18+
P.S. Кстати, файлы отправляются ни GET и не POST, а в FILES. Поди разбери что это :) ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 22.11.2012, 14:06 |
|
||
|
Делать все методы статическими или класс абстрактным?
|
|||
|---|---|---|---|
|
#18+
Shitbox2На счет хакера. Думаю, это забота движка, отслеживать, чтобы картинки могли только зарегистрированные пользователи загружать. Это в примере только все для всех. Т.е. для незареганного просто не подключится класс. Опять же, клиентский скрипт должен отслеживать это и выполнять колбек функцию исходя от типа ошибки сервера. Ух... Сколько работы-то вот-вот... Это ответ Ренату, к тому, что надо отправлять не сразу в скрипт своего модуля, а в скрипт, который программер выберет (может он какой-нить контроллер фрэймворка туда укажет)... Тогда забота проверок падёт на него. Ты просто кода ошибок ему напиши(константы/переменные статические вбей например) пускай орудует и скрипту возвращает. Это вообщем на твоё усмотрение (вариантов уйма) ))) ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 22.11.2012, 14:13 |
|
||
|
Делать все методы статическими или класс абстрактным?
|
|||
|---|---|---|---|
|
#18+
Ну так есть же такая функция. Специально сделал графическую библиотеку: Код: php 1. 2. 3. 4. Здесь $this->upload_dir . $file_name имя вашего файла, $this->previews_dir . $file_name имя нового файла или false, если нужно перезаписать старый. Подсовывайте любой и обрабатывайте. Вообще, сейчас примерно такая структура: jquery.damnUploader.js — загрузка миниатюр и отправка на сервер jquery.fancybox.js — просмотр картинок jquery.autogrowtextarea.js — автомасштабирование текстовых полей lib/графическая библиотека.php Это конкретные черные ящики main.js — управление загрузкой картинок action.php — взаимодействие с js, БД и файловой системой Это вещи, плохо поддающиеся упаковке в ящик, или до меня просто не дошло как сделать это. Не могу же предсказать как в БД буду хранится сведения о картинках. Может они в таблице пользователей будут, а может еще где. Поэтому приходится писать простой код, для быстрого понимания и переделки ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 22.11.2012, 14:22 |
|
||
|
Делать все методы статическими или класс абстрактным?
|
|||
|---|---|---|---|
|
#18+
Shitbox2, сорри, с обработкой серверных картинок ступил. :) ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 22.11.2012, 14:29 |
|
||
|
Делать все методы статическими или класс абстрактным?
|
|||
|---|---|---|---|
|
#18+
Вопрос немного не по теме. Не могу тратить все время на проект, поэтому реально ли найти заказчиков, которые могли бы заплатить за то, чтобы сделал подобную штуку под их нужды, но большинство наработок по этой теми остались бы открытыми? Если такая практика распространена, где можно найти таких? ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 22.11.2012, 17:04 |
|
||
|
Делать все методы статическими или класс абстрактным?
|
|||
|---|---|---|---|
|
#18+
Shitbox2, Оставь авторское право за собой и делай с кодом что хочешь. Клиента будет волновать только оправданность его затрат и безопасность его продукта. Поэтому, если без дырок, то можно всё. Так что клиенту о своих планах сообщать не обязательно. Возьмись за любой сайт, в котором нужна галерея, аватары, выставь адекватную стоимость и сроки, и пиши наздоровье. Я так свой двиг полностью свинтил начав работу с сайта визитки. ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 22.11.2012, 20:40 |
|
||
|
Делать все методы статическими или класс абстрактным?
|
|||
|---|---|---|---|
|
#18+
Найти бы сайт, где нужна галерея и аватары, а то, посмотришь раздел Работа, просят обычно какую-нибудь чухню. Интеграцию с какой-нибудь неизвестной бух. системой и т.п. :) ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 22.11.2012, 21:06 |
|
||
|
Делать все методы статическими или класс абстрактным?
|
|||
|---|---|---|---|
|
#18+
Shitbox2Вот проект полностью: https://github.com/tamtakoe/photoalbum См. action.php. Графические классы в папке lib Соответственно, хотелось бы построить его так, чтобы можно было легко использовать в других проектах. Кстати, почему-то не получается обращаться к классу Album без создания экземпляра (Album::init()) Про sql и xss инъекции почитайте плис ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 22.11.2012, 21:09 |
|
||
|
Делать все методы статическими или класс абстрактным?
|
|||
|---|---|---|---|
|
#18+
Да-да, знаю. Ну, sql и xss остается полностью на совести разработчика. По идее все запросы к БД он должен обернуть функциями своего движка. Хотя, если напишите пару легких оберток, внесу их как образец ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 22.11.2012, 21:38 |
|
||
|
Делать все методы статическими или класс абстрактным?
|
|||
|---|---|---|---|
|
#18+
в классе Album есть метод savefile(). Его задача проверить соответствует ли полученный файл условиям и записать его на диск, т.е. метод достаточно универсальный. Условия он берет из параметров класса: allowed_type, max_file_size и других методов: number_of_files, files_size. Кажется, было бы правильнее передавать ему параметры там где он вызывается. Правда, тогда получится такая страшная конструкция: savefile($this->allowed_type, $this->max_file_size, number_of_files, files_size) Правильно мыслю? ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 22.11.2012, 22:28 |
|
||
|
Делать все методы статическими или класс абстрактным?
|
|||
|---|---|---|---|
|
#18+
Еще... Если возникнет ситуация, что в системе уже будет класс Album или Image, как решить эту проблему? Такой вариант покатит? action.php Код: php 1. 2. 3. 4. 5. 6. 7. 8. 9. 10. 11. 12. 13. 14. 15. 16. 17. lib/dg.php и lib/magickwand.php Код: php 1. 2. 3. 4. 5. ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 23.11.2012, 17:03 |
|
||
|
Делать все методы статическими или класс абстрактным?
|
|||
|---|---|---|---|
|
#18+
по неймспейсу покатит. Или можно "по старому", делать префиксы к имени класса к примеру: Kj_Albom, Kj_Image etc и все что начинаеться с Kj сразу будет понятно из какого модуля. Да и настроить автолоадер по префиксу не сложно. ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 23.11.2012, 17:57 |
|
||
|
|

start [/forum/topic.php?fid=23&msg=38048510&tid=1464338]: |
0ms |
get settings: |
8ms |
get forum list: |
21ms |
check forum access: |
4ms |
check topic access: |
4ms |
track hit: |
75ms |
get topic data: |
13ms |
get forum data: |
3ms |
get page messages: |
88ms |
get tp. blocked users: |
2ms |
| others: | 245ms |
| total: | 463ms |

| 0 / 0 |
