Альтернативный плагринг

Здесь можно обсудить сайт PlugRinG и предложить идеи по его дальнейшему развитию.
User avatar
Max Rusov
Posts: 3599
Joined: Wed 23 Nov, 2005 11:11
Location: Москва-Питер
Been thanked: 6 times
Contact:

Re: Новый плагринг

Postby Max Rusov » Wed 05 May, 2010 09:29

Latest post of the previous page:

--in progress--

User avatar
Andrey Budko
Posts: 1204
Joined: Fri 01 Apr, 2005 14:03
Contact:

Re: Новый плагринг

Postby Andrey Budko » Wed 05 May, 2010 09:34

Очередной аналитик?

Max Rusov wrote:--in progress--

Поздно. Закомпостировано :)

Demiurg
Posts: 22
Joined: Wed 05 May, 2010 07:39
Location: Химки
Contact:

Re: Новый плагринг

Postby Demiurg » Wed 05 May, 2010 09:41

Для иронизирующих: hh[dot]ru/resume/print[dot]do?id=50a532bb00506a78

User avatar
Max Rusov
Posts: 3599
Joined: Wed 23 Nov, 2005 11:11
Location: Москва-Питер
Been thanked: 6 times
Contact:

Re: Новый плагринг

Postby Max Rusov » Wed 05 May, 2010 09:41

Убежало, раньше чем дописал. :)

Demiurg wrote:1. Исходники я посмотрел. Хотя я на PHP и не пишу, но грабли у начинающих одни и те же )

Ну, положим, начинающий я только в PHP. С базами я работаю уже лет 20.

Demiurg wrote: Так что с оптимизации и начнем - Вы при запросе страницы плагина лезете в базу (функция db_read_plugin_by_id) потом генерируете блок с описанием для страницы. Однако как часто меняется эта информация? Есть ли нужда её постоянно брать из базы? Конечно нет. Достаточно один раз сгенерировать этот блок и сохранить в кэш (самое простое - на диск). Далее этот блок генерировать только при отсутствии его в кэше, и при обновлении информации о плагине в БД очищать кеш.

И? Вы полагаете это будет быстрее чем выбрать запись из базы по первичному ключу? Нафига бы тогда человечество вообще придумало DBMS?

Demiurg wrote:Еще Вы тут жаловались на хостинг - могу предоставить доступ к своему серверу, для разработки.

Для разработки мне достаточно локального компьютера. Я не собираюсь хостить альтернативный плугринг. Либо он станет официальным, либо умрет.

Demiurg wrote:И еще, посмотрите на это: /plugins?category=%FD&name=&author=&tag=&tag=&tag=&updated=&sortby=1

Смотрю. И что? Если вы посоветуете, как _легко_ сделать так, чтобы форма с GET не формировала пустых параметров, я поправлю. Но вряд ли это повлияет на быстродействие.

Demiurg wrote:2. 500 плагинов автоматом дают 1000 файлов (x86 и x64)
3. Я про MySQL знаю достаточно, и то что можно положить базу на таблице в 1000 строк - совсем не фантастика

Возможно. У меня нет опыта общения с монстроузными CMS.

Demiurg
Posts: 22
Joined: Wed 05 May, 2010 07:39
Location: Химки
Contact:

Re: Новый плагринг

Postby Demiurg » Wed 05 May, 2010 09:51

И? Вы полагаете это будет быстрее чем выбрать запись из базы по первичному ключу?

Разумеется. Статика всегда отдается быстрее чем динамика и требует меньше ресурсов.
Нафига бы тогда человечество вообще придумало DBMS?

А Вы подумайте - почему во всех веб-проектах обращения к БД стараются заменить на обращения к кешу (например к memcached)?
Именно из-за недостаточной скорострельности БД.
Смотрю. И что?

Входные параметры нужно проверять

User avatar
Max Rusov
Posts: 3599
Joined: Wed 23 Nov, 2005 11:11
Location: Москва-Питер
Been thanked: 6 times
Contact:

Re: Новый плагринг

Postby Max Rusov » Wed 05 May, 2010 10:04

Demiurg wrote:
И? Вы полагаете это будет быстрее чем выбрать запись из базы по первичному ключу?

Разумеется. Статика всегда отдается быстрее чем динамика и требует меньше ресурсов.

Да при чем здесь статика/динамика? Вопрос в эффективности доступа к данным. Для БД хранить сотни тысяч/миллионы записей - вообще не проблема. Как у вас будет работать кэш с 100K файлов?

Demiurg wrote:
Нафига бы тогда человечество вообще придумало DBMS?

А Вы подумайте - почему во всех веб-проектах обращения к БД стараются заменить на обращения к кешу (например к memcached)?

У меня есть гипотезы по этому поводу, но я их, пожалуй, озвучивать не буду. А вот Вы подумайте - почему во всех _не_ WEB проектах DBMS как то справляются с нагрузкой, а в WEB вдруг такая проблема. В чем же такая специфика WEB проектов?

User avatar
Max Rusov
Posts: 3599
Joined: Wed 23 Nov, 2005 11:11
Location: Москва-Питер
Been thanked: 6 times
Contact:

Re: Новый плагринг

Postby Max Rusov » Wed 05 May, 2010 10:11

Demiurg wrote:Входные параметры нужно проверять

Так они и проверяются. Сайт не сломался, вы получили собщение об ошибке, что Вам еще надо?

User avatar
Andrey Budko
Posts: 1204
Joined: Fri 01 Apr, 2005 14:03
Contact:

Re: Новый плагринг

Postby Andrey Budko » Wed 05 May, 2010 10:21

Max Rusov wrote:Да при чем здесь статика/динамика? Вопрос в эффективности доступа к данным. Для БД хранить сотни тысяч/миллионы записей - вообще не проблема. Как у вас будет работать кэш с 100K файлов?

У меня тупорылый безиндексный поиск "по всем полям по всем (200+) таблицам" с динамическим построением запроса к каждой таблице на полгигабайте данных на пеньке 3! лолшто, который, ко всему прочему, обслуживает еще несколько моих не менее тупорылых SMPP и HTTP сервисов и раздает интернет/почту на офис - выполняется мгновенно. Городить огород с кешированием, индексацией по частым запросам итд там, где и так все работает молнеиносно - это ж чистой воды онанизм, не? Возникнут проблемы - появится и решение.

Demiurg
Posts: 22
Joined: Wed 05 May, 2010 07:39
Location: Химки
Contact:

Re: Новый плагринг

Postby Demiurg » Wed 05 May, 2010 10:30

Как у вас будет работать кэш с 100K файлов?

Прекрасно будет работать. Как работает хэш-таблица? Вот именно так и будет работать. К тому же это могут быть и не файлы, а memcached.
В чем же такая специфика WEB проектов?

Интересный вопрос. Я даже призадумался. То, что БД в WEB узкое место у меня сомнения не вызывает, как и у многих других WEB-разработчиков. Но вот ПОЧЕМУ?
Как мне кажется, тут всё дело в цене. Т.е. можно сделать достаточно быструю СУБД (с кластеризацией и т.п.), но вот какова будет цена такого решения? Чую, намного дешевле поставить быстрый кеш на memcached и запрашивать данные из относительно медленной БД только один раз.
Еще тут в голову пришло - в ВЭБ очень жесткие требования по времени реакции на действия пользователя, тогда как в прочих системах пользователь может и подождать (хотя приятного в этом, конечно, мало).
Сайт не сломался, вы получили собщение об ошибке, что Вам еще надо?

А зачем пользователю это сообщение?
И вот такой вариант: /plugins?category=&name='&author=&tag=&tag=&tag=&updated=&sortby=1
доказывает что данные не проверяются, т.е. есть SQL-инъекция

User avatar
Max Rusov
Posts: 3599
Joined: Wed 23 Nov, 2005 11:11
Location: Москва-Питер
Been thanked: 6 times
Contact:

Re: Новый плагринг

Postby Max Rusov » Wed 05 May, 2010 10:46

Demiurg wrote:Интересный вопрос. Я даже призадумался. То, что БД в WEB узкое место у меня сомнения не вызывает, как и у многих других WEB-разработчиков. Но вот ПОЧЕМУ?
Как мне кажется, тут всё дело в цене. Т.е. можно сделать достаточно быструю СУБД (с кластеризацией и т.п.), но вот какова будет цена такого решения? Чую, намного дешевле поставить быстрый кеш на memcached и запрашивать данные из относительно медленной БД только один раз.

А дисковое пространство - оно бесплатное? Не жирно ли удваивать/утраивать объем базы данных? Еще раз повторю - БД _не_медленная_. Если кто-то не умеет писать эффективные SQL запросы - не стоит делать из этого далекоидущие выводы. А вообще - разговор какой-то академический. К плугрингу то это все каким боком? Вон старый Plugring - вообще на FoxPro. Как то выжил.

Demiurg wrote:А зачем пользователю это сообщение?

А зачем пользователь полез ручками править URL запроса? Ну, полюбуйся на это:

search.php?keywords=%FD

Так лучше?

Demiurg
Posts: 22
Joined: Wed 05 May, 2010 07:39
Location: Химки
Contact:

Re: Новый плагринг

Postby Demiurg » Wed 05 May, 2010 10:54

К плугрингу то это все каким боком? Вон старый Plugring - вообще на FoxPro. Как то выжил.

Ладно, это отложим.
Хотя память сейчас намного дешевле чем была еще совсем недавно, поэтому лучше иметь дубли информации и не ждать.
А зачем пользователь полез ручками править URL запроса?

Чтобы сломать сайт, сделать дефейс и показывать это друзьям школьникам.
Проверка всех данных поступающих извне - это аксиома ВЭБ-программирования, т.к. SQL-инъекции сегодня умеют делать даже школьники, да и XSS вещь вполне реальная.

И еще по исходникам - если дизайн будет меняться, то стоит задействовать шаблонизатор, пока еще кода немного.

User avatar
Max Rusov
Posts: 3599
Joined: Wed 23 Nov, 2005 11:11
Location: Москва-Питер
Been thanked: 6 times
Contact:

Re: Новый плагринг

Postby Max Rusov » Wed 05 May, 2010 11:00

Demiurg wrote:Чтобы сломать сайт, сделать дефейс и показывать это друзьям школьникам.


Ну так я Вам уже ответил - сайт _не_сломался_. Вы получили _корректное_ сообщение об ошибке (первый раз). Вот сделаете дефейс - тогда и поговорим.

Впрочем, по поводу того что кавычки попадают в SQL запрос - согласен это бага. Поправлю.

Demiurg
Posts: 22
Joined: Wed 05 May, 2010 07:39
Location: Химки
Contact:

Re: Новый плагринг

Postby Demiurg » Wed 05 May, 2010 11:10

Подставляйте параметры в запрос через плейсхолдеры, и не будет таких проблем.

User avatar
Max Rusov
Posts: 3599
Joined: Wed 23 Nov, 2005 11:11
Location: Москва-Питер
Been thanked: 6 times
Contact:

Re: Новый плагринг

Postby Max Rusov » Wed 05 May, 2010 11:12

Demiurg wrote:Подставляйте параметры в запрос через плейсхолдеры, и не будет таких проблем.

Примерчик бы на PHP. Я рыл в inet, но там даже блобы рекомендуется записывать прямым присвоением...

Demiurg
Posts: 22
Joined: Wed 05 May, 2010 07:39
Location: Химки
Contact:

Re: Новый плагринг

Postby Demiurg » Wed 05 May, 2010 11:17

В том-то и фикус, что на PHP я не пишу (хотя читаю).
На Perl пример дам легко.

User avatar
Max Rusov
Posts: 3599
Joined: Wed 23 Nov, 2005 11:11
Location: Москва-Питер
Been thanked: 6 times
Contact:

Re: Новый плагринг

Postby Max Rusov » Wed 05 May, 2010 11:19

Да вообщем и так проблем нет. Нужно только не забывать маскировать строки. Где то забыл видимо. Посмотрю.

User avatar
HaRT
Moderator
Posts: 7880
Joined: Tue 30 Aug, 2005 17:21
Location: Санкт-Петербург
Has thanked: 62 times
Been thanked: 93 times

Re: Новый плагринг

Postby HaRT » Wed 05 May, 2010 11:25

Max Rusov wrote:
Demiurg wrote:Подставляйте параметры в запрос через плейсхолдеры, и не будет таких проблем.
Примерчик бы на PHP. Я рыл в inet, но там даже блобы рекомендуется записывать прямым присвоением...
Параметризованные запросы заодно позволяют существенно сэкономить ресурсы SQL-сервера на компиляцию запроса.
Фар есть инструмент, а не нянька. © 2009 DrKnS


Return to “Обсуждение PlugRinG”

Who is online

Users browsing this forum: No registered users and 2 guests