SmartDB - умный драйвер СУБД.

Статус
В этой теме нельзя размещать новые ответы.

korchasa

LIMB infected
Автор оригинала: Alexandre
кеширование данных, в отличие от кеширования HTML, при быстром шаблонизаторе - наиболее правильный подход.
Время показывает, что не бывает "наиболее правильных подходов" ;)
Если мы оптимизируем, то почему не по максимуму? ИМХО, все что можно сделать заранее нужно делать заранее.
Единственный минус - повторное использование данных. В вашем случае РНР-шный массив можно использовать, как промежуточную форму представления, для чего угодно. Например при отрисовке френдленты в HTML и RSS.

Автор оригинала: Alexandre
почему не будет - у меня работает же. И мой, кеширующий модуль применять собираются в других проектах.
Если проект распределенный, т.е. как минимум на два WEB-сервера, то имеет смысл сделать кеширующего демона (что в принципе у меня и сделано) или установить мс_прокси. Но такой проект должен иметь от 50к посетителей.
практика показывает, что на одном серваке проект вполне может тянуть до 40к-50к (правда производительностть зависит от логики)
Просто по своей природе кеш на уровне запросов имеет несколько недостатков:
1. Не очень представляю, как его частично обновлять
2. Тяжело отследить момент, когда он перестает быть валидным
3. Если вы используете ООП, то каждый раз приходится выполнять преобразование массив->объект
Да и сама система построения кеша по первому запросу хоть и хороша прозрачностью, но имеет большой недостаток в виде лага на первом пользователе. Что не очень хорошо, если кеш часто сбрасывается.

Автор оригинала: Alexandre
можно поподробнее, изввини за темноту, что такое shmop
Я сам узнал об этой штуке пару дней назад, и пока не придумал, как это использовать ;)
 

Alexandre

PHPПенсионер
korchasa вот тебе пример:
нужно вывести список товаров определенной категории. Пусть запрос отдает 300 товаров, которые мы разбивает по 20 товаров на стр., получается 15 страниц.

если сделать по умному, пусть статистика показывает, что Посетитель как правило, далее 10 страниц не идет.

Выбираем 200 записей и кешируем их.
Далее организуем навигацию по кешу по 20 записей на стр.
На этом мы - сокращаем кол-во обращений к БД уже, где-то в 5-10 раз. Ни один mysql_proxy не делает этого.
Мы сокращаем кол-во файлов в кешевой директории в 10 раз.

Ну если уж назойливый Посетитель или гугль-бот, то отдадим ему еще один запрос на оставшиеся 100 записей (5 страниц)


Просто по своей природе кеш на уровне запросов имеет несколько недостатков:
1. Не очень представляю, как его частично обновлять
выставлять время валидации кеша, как впрочем сделано в мемкеше. Алгоритм везде одинаковый.
2. Тяжело отследить момент, когда он перестает быть валидным
Сам определяешь его валидность. Либо по таймауту. Либо, сделать кешАйДи назначаемым, тогда всегда можно отследить, например в админке, изменение определенных таблиц, соответственно валидность определенных кешАйДи.
3. Если вы используете ООП, то каждый раз приходится выполнять преобразование массив->объект
разве это недостаток? Это просто недоработка кода. Можно всегда сделать получение результата в виде массива объектов, или одного объекта. Я сам сторонник объектного подхода.
например, у меня во фреймворке были методы:
$db->Fetch()
$db->FetchAll()
$db->FetchObject()
Правда, в последнем модуле (dbCache) $db->FetchObject() отсутствует. Но, как правило, результаты сразу передаются в шаблонизатор массивом, по этому я и ограничился массивом. Будет спрос - будет и код ;) Из-за пожелания третьего, который еще не уверен нужен ли ему модуль, дорабатывать не буду. Если попросят те два, которые его используют - то уж... придется доработать... времени - минут 40-час.

-~{}~ 16.02.08 01:13:

первая сцылка в гугле на "shmop" выводит на! php manual - shmop
пхп shmop не пользовался...вот и спросил.
 

korchasa

LIMB infected
Автор оригинала: Alexandre
korchasa вот тебе пример:
нужно вывести список товаров определенной категории. Пусть запрос отдает 300 товаров, которые мы разбивает по 20 товаров на стр., получается 15 страниц.

если сделать по умному, пусть статистика показывает, что Посетитель как правило, далее 10 страниц не идет.

Выбираем 200 записей и кешируем их.
Далее организуем навигацию по кешу по 20 записей на стр.
На этом мы - сокращаем кол-во обращений к БД уже, где-то в 5-10 раз. Ни один mysql_proxy не делает этого.
Мы сокращаем кол-во файлов в кешевой директории в 10 раз.

Ну если уж назойливый Посетитель или гугль-бот, то отдадим ему еще один запрос на оставшиеся 100 записей (5 страниц)
Хороший пример. Страничную навигация еще та головная боль. По умолчанию принимаем, что выборка списка товаров "тяжелая"(например товары самых популярных фирм), иначе зачем нам кеширование :)
Вот тут кеширование объектов, если они имеют данные о популярности фирмы, рулит, т.к. мы можем определить на какую страницу попадет товар. Проще запихнуть коллекцию объектов в кеш, либо закешировать блок HTML для каждого товара, а потом при добавлении нового товара в список, просто добавлять его в коллекцию.

В случае же кеширования результатов запроса мы получаем проблему в виде полного сброса кеша, при добавлении любого товара. Можно, конечно, рядом хранить популярность "нижнего" товара в странице, но это еще один кеш :)
Автор оригинала: Alexandre
выставлять время валидации кеша, как впрочем сделано в мемкеше. Алгоритм везде одинаковый...
Это честная схема. Мы просто говорим, что наши данные немножко "отстают" от реальности. Только пользователи этого почему то не любят :(
Кстати, кроме ttl и id, можно обновлять и тегами.

...тогда всегда можно отследить, например в админке, изменение определенных таблиц, соответственно валидность определенных кешАйДи. разве это недостаток?
Недостаток в том, что отследить можно только изменение таблиц, а не ОБЪЕКТОВ, с их связями.

Это просто недоработка кода. Можно всегда сделать получение результата в виде массива объектов, или одного объекта. Я сам сторонник объектного подхода.
например, у меня во фреймворке были методы:
$db->Fetch()
$db->FetchAll()
$db->FetchObject()
Правда, в последнем модуле (dbCache) $db->FetchObject() отсутствует. Но, как правило, результаты сразу передаются в шаблонизатор массивом, по этому я и ограничился массивом. Будет спрос - будет и код ;) Из-за пожелания третьего, который еще не уверен нужен ли ему модуль, дорабатывать не буду. Если попросят те два, которые его используют - то уж... придется доработать... времени - минут 40-час.
Я согласен, что кеширование данных полезно. Просто так получилось, что я резко шагнул из проектов где мне проще было кешировать ручками по тому же SQL (там их было не много, и я не особо заморачивался с автоматизацией), в проекты где это уже не работает (из-за требований по времени валидности кеша). И на мой взгляд кеширование по тексту запроса это полумера, т.к. если данные обновляются часто, то либо кеш надо будет часто сбрасывать, либо выставлять небольшой ttl. И в первом, и во втором случае мы все равно имеем нагрузку на базу. Получается, что ниша, которую он занимает - редкоизменяющиеся данные. Очевидный плюс - простота реализации и использования.

Я совсем не понимаю зачем из того, что в dbal встроена поддержка кеша делать заявление о мега-фиче, как будто это "серебряная пуля". Для меня, например, это далеко не главное.

ЗЫ: Извиняюсь, что сумбурно, наверное сказывается время суток :D
 

zerkms

TDD infected
Команда форума
Андрейка, мне об этом тоже говорили, когда обсуждали мой модуль...
Да, он присутствует, но только на текущую коннекцию, только на небольшое время...
я бы на этот кеш не расчитывал.
бред. нативный кэш mysql един для всех коннектов + валидность истекает по модификации данных, а не таймауту

Есть более мудное и готовое решение mysql_proxy, но там как-то сложно с управлением кеширования, т.е. тебе надо сперва что-то писать в программе, а потом изощряться в настройках прокси. А потом все это перенастраивать...
как раз наоборот, mysql-proxy призван скрывать вещи вроде кеширования и балансировки нагрузки, собственно это он и делает.
 

Alexandre

PHPПенсионер
Проще запихнуть коллекцию объектов в кеш, либо закешировать блок HTML для каждого товара, а потом при добавлении нового товара в список, просто добавлять его в коллекцию
хех - если кол-во товаров менее 100 000, то конечно? возможно и проще. Извините, у меня их в скором времени станет 5 000 000.
Мы просто говорим, что наши данные немножко "отстают" от реальности. Только пользователи этого почему то не любят
наши товары не отстают от реальности :) и пользователи по этому нас любят. Управлять кешем надо с головой.
Можно, конечно, рядом хранить популярность "нижнего" товара в странице, но это еще один кеш
и что тебе мешает сделать еще один кеш ? зато быстро.
Кстати, кроме ttl и id, можно обновлять и тегами
кто сказал что используется ZF?

-~{}~ 16.02.08 13:13:

Недостаток в том, что отследить можно только изменение таблиц, а не ОБЪЕКТОВ, с их связями
что в твоем понятии ОБЪЕКТ со связью?
И на мой взгляд кеширование по тексту запроса это полумера, т.к. если данные обновляются часто, то либо кеш надо будет часто сбрасывать, либо выставлять небольшой ttl. И в первом, и во втором случае мы все равно имеем нагрузку на базу.
кешировать надо то - что должно кешироваться...
не надо тупо подходить ко всему.
Я совсем не понимаю зачем из того, что в dbal встроена поддержка кеша делать заявление о мега-фиче, как будто это "серебряная пуля". Для меня, например, это далеко не главное.
Согласен...
как раз наоборот, mysql-proxy призван скрывать вещи вроде кеширования и балансировки нагрузки, собственно это он и делает
и я про тоже,
он кеширует все подряд, а надо кешировать именно то, что необходимо.
 

WP

^_^
> А можно глупый вопрос? Чем он лучше чистого SQL? Ну кроме кеша, конечно.
Вовсе ничем не лучше, использовать надо только в определенных случаях, в Идеологии написал об этом.
dark-demon
> будет найден foodbar
Есть метод like_escape.

atv
А как оптимизированность зависит от кол-ва строк в исходнике метода?

korchasa
> это жёсткая завязка на один cache-storage
То есть? Можно хранить только в файле, а можно юзать еще и shared memory.
> плохой интерфейс(
Мне нужно было вести поддержку интерфейса старого драйвера.
> Весь прикол в том, что делать кеш на этом уровне практически
> бессмысленно. На простых сайтах это еще не нужно, а на сложных уже не будет работать
Я этот продукт делал не абстрактно, а для конкретных проектов, и там он блестяще себя показал.
Народ, если вы не знаете или недавно узнали что такое shared memory, о чем вообще говорить. Если в ваших проектах использовать такой механизм не нужно - даже не заморачивайтесь.

-~{}~ 16.02.08 15:32:

з.ы. memcached в данном случае хрень т.к. там нельзя выбирать часть данных (seek'а нет).

zerkms
Есть много задач когда не надо обновлять кеш при любом изменении таблиц.
 

korchasa

LIMB infected
Автор оригинала: Alexandre
хех - если кол-во товаров менее 100 000, то конечно? возможно и проще. Извините, у меня их в скором времени станет 5 000 000.
Ну как я мог об этом догадаться из предложенного условия?
наши товары не отстают от реальности :) и пользователи по этому нас любят. Управлять кешем надо с головой.
Т.е. при добавлении товара грохаются все кеши, а потом где-нибудь в оффлане заполняются? Или первый пользователь сам заполняет? Сколько идет выборка для генерации кеша?
и что тебе мешает сделать еще один кеш ? зато быстро.
Предложенный метод теряет свой самый большой плюс - простоту.
кто сказал что используется ZF?
Я говорил о методике, а не о конкретной реализации.
что в твоем понятии ОБЪЕКТ со связью?
Для предложенного примера - товар+фирма. Это, конечно, можно сделать в самом запросе. Только помимо этого придется как-то отслеживать изменения в таблице фирм, например, парсить текст запроса и вытащив названия таблиц убивать все кеши, на изменениях. И получается, что мы приходим к кешу MySQL, который ведет себя точно так же. Проблему я уже выше описал - такой кеш нельзя изменять, его можно только убивать и создавать заново.

кешировать надо то - что должно кешироваться...
не надо тупо подходить ко всему.
Т.е. ты считаешь, что нельзя кешировать часто изменяющиеся данные? Очень распространённый пример - френдлента.

Автор оригинала: WP
korchasa
> это жёсткая завязка на один cache-storage
То есть? Можно хранить только в файле, а можно юзать еще и shared memory.
Это не жесткая привязка?

Автор оригинала: WP
> плохой интерфейс(
Мне нужно было вести поддержку интерфейса старого драйвера.
Ну и ввел бы отдельный драйвер, зачем остальным мучатся? Ты же выложил не для себя, а для других.

> Весь прикол в том, что делать кеш на этом уровне практически
> бессмысленно. На простых сайтах это еще не нужно, а на сложных уже не будет работать
Я этот продукт делал не абстрактно, а для конкретных проектов, и там он блестяще себя показал.
А другие кеши показали себя намного хуже?

Народ, если вы не знаете или недавно узнали что такое shared memory, о чем вообще говорить. Если в ваших проектах использовать такой механизм не нужно - даже не заморачивайтесь.
Я думаю о самой shared memory присутствующие здесь узнали еще в институте. Не знали о возможности работы с ней из РНР.

з.ы. memcached в данном случае хрень т.к. там нельзя выбирать часть данных (seek'а нет).
У вас же id есть, зачем поиск? Скорее наоборот - придется добавлять в метаинформацию данные о смещении и размере каждого из id'шников + бороться с возможными косяками при параллельной записи этих данных.
 

WP

^_^
> Это не жесткая привязка?
Два варианта. А что в твоем понимании жесткая привязка?
> Ну и ввел бы отдельный драйвер, зачем остальным мучатся? Ты же выложил не для себя, а для других.
Не вижу мучения в паре дополнительных методов.
> Я думаю о самой shared memory присутствующие здесь узнали еще в институте. Не знали о возможности работы с ней из РНР.
Хм, язык не может налагать каких-то ограничений.. это ведь всего лишь синтаксис.
> У вас же id есть, зачем поиск?
А как хранить индекс? ;)
> А другие кеши показали себя намного хуже?
Да.
 

Alexandre

PHPПенсионер
Т.е. при добавлении товара грохаются все кеши, а потом где-нибудь в оффлане заполняются? Или первый пользователь сам заполняет? Сколько идет выборка для генерации кеша?
угадал. существует анализ использования кеша. убивается то - что не нужно. то что актуально - регенерится. что мало-востребованно, то генерится по первому запросу.
Для предложенного примера - товар+фирма. Это, конечно, можно сделать в самом запросе. Только помимо этого придется как-то отслеживать изменения в таблице фирм, например, парсить текст запроса и вытащив названия таблиц убивать все кеши, на изменениях. И получается, что мы приходим к кешу MySQL, который ведет себя точно так же. Проблему я уже выше описал - такой кеш нельзя изменять, его можно только убивать и создавать заново.
в принципе да, по этому эту проблему я решаю двояко.. в основном кеш убивается. но в настоящее время я дорабатываю функционал объединения двух кешей. Да, приходим к аналогу SQLite, но это сильно разгружает и без того нагруженную БД.да и алгоритм выборки-объединения по моим расчетам должен пройти быстрее, чем это реализуется в БД (объемы данных в кешах в 1000 раз меньше, чем сканировала бы БД).
Нет, я не занимаюсь парсингом SQL. Функционал относительно универсальный, но имеет кучу ограничений. В общем он заточен под определенный проект, под определенные задачи, но расширяемый.
 

korchasa

LIMB infected
Автор оригинала: WP
> Это не жесткая привязка?
Два варианта. А что в твоем понимании жесткая привязка?
Вот это оно и есть. Жесткая привязка к реализации, а не к интерфейсу. Нам не для того объекты дадены :)
Вынеси хранилища в отдельные объекты, реализующие какой-то определенный интерфейс. Тем самым ты избавишься от вилок(если файл, то..если память, то) в коде.
> Ну и ввел бы отдельный драйвер, зачем остальным мучатся? Ты же выложил не для себя, а для других.
Не вижу мучения в паре дополнительных методов.
Блин, ну какие два метода? Пять первых методов Smart_DB_MySQL:
is_cached_result - андескорес
clearResultCache - оппа и уже верблюды, да и еще слова по другому расположены
errHandler - специально чтобы программисты не парились, мы сократили метод на две буквы, а что бы они еще и подумали, назвали его существительным
error - супер!
handleError - нормально, а кто же такой загадочный errHandler?

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

> У вас же id есть, зачем поиск?
А как хранить индекс? ;)
Как вариант - отдельно?

Автор оригинала: Alexandre
угадал. существует анализ использования кеша. убивается то - что не нужно. то что актуально - регенерится. что мало-востребованно, то генерится по первому запросу.
Ведется лог обращений к тем или иным кешам, а потом в оффлайне агрегируется?

в принципе да, по этому эту проблему я решаю двояко.. в основном кеш убивается. но в настоящее время я дорабатываю функционал объединения двух кешей. Да, приходим к аналогу SQLite, но это сильно разгружает и без того нагруженную БД.да и алгоритм выборки-объединения по моим расчетам должен пройти быстрее, чем это реализуется в БД (объемы данных в кешах в 1000 раз меньше, чем сканировала бы БД).
Т.е., насколько я понял: у вас хорошая схема определения "популярности" данных, и в случае если пользователь обращается за чем-то, чего нет в кеше, вы это генерируете, и пихаете в кеш. Помимо этого на основе данных о популярности вы убиваете все "не интересные" кеши.
Просто такая схема для кеширования инстансов объектов тоже работает, но с одной стороны у нее есть плюс в том, что популярность будет определяться для всех запросов, а в случае кеширования данных, только для запросов с отдельных страниц. В общем то даже не знаю, что лучше. Наверное все таки данные, т.к. можно ускорить определенные страницы за счет других, при условии, что памяти используется столько же.
 

Alexandre

PHPПенсионер
Ведется лог обращений к тем или иным кешам, а потом в оффлайне агрегируется?
да.
Т.е., насколько я понял: у вас хорошая схема определения "популярности" данных, и в случае если пользователь обращается за чем-то, чего нет в кеше, вы это генерируете, и пихаете в кеш.
пока именно так.
то о чем речь шла ниже, пока на стадии экспериментов. Это я уж заикнулся, раз ты почти угадал. Потом подробно расскажу.
В общем то даже не знаю, что лучше. Наверное все таки данные, т.к. можно ускорить определенные страницы за счет других, при условии, что памяти используется столько же.
HTML тоже кешируется, только в другом месте и другими средствами (пока исп. смарти, но я от него хочу всеми силами избавиться.) Например - пункты меню. мы их меняем, при вводе новой категории, а это происходит раз в полгода. Зачем тогда мне лишний раз нагружать мой кешер?

у каждого подхода есть свои плюсы и минусы, у каждого проекта есть свои особенности, и говоря об одном проекте, например шопе, данные решения, не факт, что подойдут в другой проект, например блоги, где информация постоянно меняется. Для каких-то проектов mysql_proxy решение всех проблем. Для каких-то достаточно memcache. у
 

WP

^_^
> Ну это наверное на субботу стоит отнести. Просто немного интересно, как не теряя скорости ты бы работал с ней, без соответствующего расширения?
Написал бы это расширение.
> Блин, ну какие два метода? Пять первых методов Smart_DB_MySQL:
Лично меня это нисколько не напрягает.
> errHandler
А что тебе не нравится? Переменная хранит callback.
> handleError
Это для внутреннего пользования, запускает обработку ошибки.
> Как вариант - отдельно?
А какой смысл тогда в memcache?
 

WP

^_^
Прежде чем метать тапочки, посмотрите скорость работы и покайтесь.

Frol
Угу, тех кто его не понимает. Та же история с квики, те кто код не понимает, чтобы скрыть собственное невежество ругают код, хотя код не может быть понятным и непонятным, т.к. это код. Он не может врать. Не знаю как вы, а я люблю код за быстроту и четкость выполнения задачи, а на наличие комментариев мне плевать, я их не читаю, т.к. написать в комментариях можно что угодно... проще прочесть код, это наилучший комментарий.
А насчет переносов строк - не люблю разводить буквы без надобности.
Можно написать:
PHP:
if (condition)
{
     print 'true!';
}
else
{
    print 'false!';
}
А можно:
PHP:
print condition?'true!':'false!';
Или
PHP:
if (condition) {print 'true!';} else {print 'false!';}
Мне вторые два варианта нравятся тем что на странице сразу умещается больше кода, и проще читать.. подсознательно считаю скобки, так что хоть в одну строку всё будет.
 

phprus

Moderator
Команда форума
WP
Прежде чем метать тапочки, посмотрите скорость работы и покайтесь.
Скорость работы от наличия лишнего символа перевода сроки уменьшится на 0,000000000000000000000000000001%, а вот читаемость кода упадет в сотни раз. Кроме того из релиза который будет выложен на сервер все комментарии и символы перевода строк можно и удалить.

Та же история с квики, те кто код не понимает, чтобы скрыть собственное невежество ругают код, хотя код не может быть понятным и непонятным, т.к. это код. Он не может врать.
Запомни раз и на всегда: Код может врать. Код врет. Код всегда врет. Если бы эти 3 условия были ложными то у нас никогда, ни в одной программе не было бы багов. Кроме того код всегда пишется для людей. Машине пофиг на форматирование кода она выполнит любой, а вот людям которые придут после тебя на оформление кода не наплевать. Оформляя код ты во первых оказываешь себе огромную помощь (так как увеличиваешь свою производительность труда), а во вторых уменьшаешь количество мата высказанного в твою сторону людьми читающими подобный код.

Не знаю как вы, а я люблю код за быстроту и четкость выполнения задачи, а на наличие комментариев мне плевать, я их не читаю, т.к. написать в комментариях можно что угодно... проще прочесть код, это наилучший комментарий.
Запомни раз и на всегда: Ни один код не способен объяснить что им хотел сделать программист. Код показывает только то, что сделал программист, а то что он сделал может содержать ошибки, которые не зная что должен был делать этот код исправить будет очень и очень сложно.

P.S. Посмотри на код действительно больших и требующих действительно высокое быстродействие приложений. Например, посмотри на код ядра линукса. Код прекрасно оформлен и откомментирован.

P.P.S.
Прежде чем метать тапочки, посмотрите скорость работы и покайтесь.
Прежде чем делать такие заявления отформатируй и прокомментируй свой код и сравни быстродействие. Я думаю, что ты будешь очень сильно удивлен тем, что скорость работы упадет очень и очень незначительно.
 

WP

^_^
phprus
> Скорость работы от наличия лишнего символа перевода сроки уменьшится
никакого отношения к производительности это не имеет. Для кого-то упадет для кого-то нет. Многие редакторы поддерживают трансформацию стиля кода... кому как удобнее тот так и смотрит.
> Запомни раз и на всегда: Код может врать. Код врет. Код всегда врет.
Врут глаза, а не код.
> Запомни раз и на всегда: Ни один код не способен объяснить что им хотел сделать программист.
Способен.
> Я думаю, что ты будешь очень сильно удивлен тем, что скорость работы упадет очень и очень незначительно.
Быстродействие к форматированию и комментариям никакого отношения не имеет.

-~{}~ 17.02.08 09:50:

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

phprus

Moderator
Команда форума
WP
Врут глаза, а не код.
Ты хочешь сказать что в твоем коде нет ошибок? Не надо считать себя самым умным и думать что ты пишешь код без ошибок.

Код способен объяснить только то, что СДЕЛАЛ программист. Код не способен объяснить что ХОТЕЛ сделать программист. А это не всегда одно и тоже, особенно в случае наличия логических ошибок в коде. А логические ошибки это не всегда ошибки проектирования кода.

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

P.S. Искореняй в себе привычку вырывать фразы из контекста, а то судя по твоим цитатам моего сообщения и твоим комментариям очень похоже что ты прочитал только процитированные участки и ни слова после них.

Быстродействие к форматированию и комментариям никакого отношения не имеет.
Чтение файла большего размера потребует большего времени, но такая прибавка на столько мала что она не превысит погрешности измерений времени работы программы. А так как ты все-время заостряешь внимание на скорости работы своего кода, то очень похоже что ты переоцениваешь влияние комментариев на скорость исполнения кода.
 

Андрейка

Senior pomidor developer
данный стиль кодирования показывает, что Скрипт написан профессионалом с большой буквы Пи. Очень скоро, ближе к Пасхе, появится с неба Длань Госпондя и прольет на него ману небесную и поймет он перл и будет писать на нем. Ибо так сказано в Святом писании.

phprus
Вот именно что его разрабатывает большое количество людей, но если бы этот код не был документирован то количество желающих что-то с ним делать очень сильно бы упало
ты исходишь из неверных предпосылок. Объясняли ж уже, что Код пишется не для того, чтобы всякие там, умеющие хаки в пхпбб вставлять, копались в нем, а для таких же Профессионалов.
В Коде не может быть ошибок.
Если ты не можешь понять Код, то тебе нефик его читать.
Исправлять Код могут только Профессионалы (т.е. один человек), остальным надлежит его использовать as is & without sbm. of any kind.
Код выложен для того, чтобы им могли восхищаться, а не сувать свои советы куда не надо. Профессионалы и без вас разберутся.

Такшта вы давайте тут сильнее восхищайтесь, а я пойду куличи печь и яйцы зеленкой красить.
 

WP

^_^
> Ты хочешь сказать что в твоем коде нет ошибок? Не надо считать себя самым умным и думать что ты пишешь код без ошибок.
Понятие ошибка довольно условное. Мой код нельзя заставить выполнить не то что нужно (не бывает уязвимостей).
> Код способен объяснить только то, что СДЕЛАЛ программист. Код не способен объяснить что ХОТЕЛ сделать программист.
Если ты обращаешься к коду, ты уж наверно знаешь что он должен сделать ;)
> А это не всегда одно и тоже, особенно в случае наличия логических ошибок в коде. А логические ошибки это не всегда ошибки проектирования кода.
Думаю вернее сказать ошибки в _реализации_, а не в коде.
А так как ты все-время заостряешь внимание на скорости работы своего кода, то очень похоже что ты переоцениваешь влияние комментариев на скорость исполнения кода.
Насчет скорости - Frol посетовал на то что у меня много кода в одном методе.
 

phprus

Moderator
Команда форума
WP
Если ты обращаешься к коду, ты уж наверно знаешь что он должен сделать
Что делает мой код я знаю (но не смотря на это я всегда документирую свой код на столько на сколько это возможно, но не больше чем нужно), а вот при чтении чужого кода вполне могут возникнуть вопросы "а почему это реализовано именно так?" или "А зачем тут это вообще нужно?" или много других, так вот без документации(комментариев в коде) для нахождения ответов на такие вопросы нужно потратить гораздо больше времени.

Думаю вернее сказать ошибки в _реализации_, а не в коде.
ИМХО реализация это и есть код. Или я тут в чем-то не прав? Если не прав то просветите меня в чем они различаются.

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