Это же кошмар, товарищи. PHPShop

    Оговорюсь. Не имею никакого отношения к PHPShop, не конкурирую с ней и не ставлю целью кого-то заклеймить.

    К нам обратился человек, купивший Enterprise-версию интернет-магазина PHPShop (2.1) и сделавший на ней сайт. Ему нужна некоторая доработка бизнес-логики магазина, за которую авторы запросили непомерную сумму. Мы получили код и начали смотреть.

    Это жуть. Я так писал первые 2 дня знакомства с php и вебом вообще. Студентам с таким кодом не принимаю лабы.


    Примеры:
    1.
    Вставлено в начало всех php-файлов:
    require("../connect.php");
    @mysql_connect ("$host", "$user_db", "$pass_db")or @die("Невозможно подсоединиться к базе");
    mysql_select_db("$dbase")or @die("Невозможно подсоединиться к базе");
    require("../enter_to_admin.php");


    2. defines.php
    table_name="phpshop_categories"; # имя стола базы записей в базу
    table_name1="phpshop_orders"; # имя стола базы записей в базу
    table_name2="phpshop_products"; # имя стола базы записей в базу
    table_name3="phpshop_system"; # имя стола базы записей в базу


    3. «Парсинг» настроек
    if(@parse_ini_file("../../phpshop/inc/config.ini",1))
    $SysValue=parse_ini_file("../../phpshop/inc/config.ini",1);
    elseif(@parse_ini_file("../../../phpshop/inc/config.ini",1))
    $SysValue=parse_ini_file("../../../phpshop/inc/config.ini",1);
    elseif(@parse_ini_file("../../../../phpshop/inc/config.ini",1))
    $SysValue=parse_ini_file("../../../../phpshop/inc/config.ini",1);
    else $SysValue=@parse_ini_file("../../../../../phpshop/inc/config.ini",1);
    $sql="select * from ".$SysValue['base']['table_name28']." order by discount";
    $result=mysql_query($sql);
    while ($row = mysql_fetch_array($result))
    {
    $id=$row['id'];
    $name=$row['name'];
    $discount=$row['discount'];
    $sel="";
    if($n==$id) $sel="selected";
    @$dis.="<option value=".$id." ".$sel." >".$name." - ".$discount."%
    \n";
    }

    4. Update
    $sql="UPDATE ".$SysValue['base']['table_name27']."
    SET
    login='$login_new',
    password='".base64_encode($password_new)."',
    mail='$mail_new',
    name='$name_new',
    company='$company_new',
    inn='$inn_new',
    tel='$tel_new',
    adres='$adres_new',
    enabled='$enabled_new',
    status='$status_new',
    kpp='$kpp_new',
    tel_code='$tel_code_new'
    where id='$userID'";


    5. Обработка формы проводится с register_globals
    if(@$productDELETE=="doIT")// Удаление
    {
    if(CheckedRules($UserStatus["shopusers"],1) == 1){
    $sql="delete from ".$SysValue['base']['table_name27']."
    where id='$userID'";
    $result=mysql_query($sql)or @die("Невозможно изменить запись");
    echo"

    ";
    }else $UserChek->BadUserFormaWindow();
    }


    В системных требованиях указан PHP4.
    Написано почти без использования ООП.
    Все что я видел написано в виде каши php, sql, html, js.
    Верстка откровенно едет в FF 3.
    Редактирование пользователя и создание пользователя это два файла, где %60 кода сдублировано.

    Это платный промышленный продукт? Это стоит почти 12000 за коробку? Это нашему клиенту предложили доработать самостоятельно?
    Кстати, на Хабре продукт упоминается 4 раза, и всегда в общем положительно: habrahabr.ru/search/?q=phpshop

    Similar posts

    AdBlock has stolen the banner, but banners are not teeth — they will be back

    More
    Ads

    Comments 405

      +2
      >> Ни одного класса в коде не найдено.

      >> $UserChek->BadUserFormaWindow();

      А объект тогда откуда взялся :)?
        +2
        посмотрел. согласен, неправ. претензию снимаю, пост редактирую
          +8
          Это, кстати, очень по ООП :) объект $UserChek :)
            0
            «Ни одного класса в коде не найдено» — чего ж тут плохого? )
            +72
            … имя стола базы записей в базу
            о боже
              0
              хорошая шутка
              +4
              о боже!
              но самое печальное, что такое встречается повсеместно во многих платных и гораздо более дорогих продуктах (например про netcat тут уже была статейка)…
              мне кажется пора уже статью в кодексе вводить, по которой за представление такого качества продукта — наказывать самым жестким способом!
                +1
                Да, казнить за такой код, на лобном месте )))
                  +6
                  Вы предлагаете вводить показательные расстрелы программистов? Каждого второго тогда казнят.
                    +2
                    ох уж, этот несбыточный идеальный мир… =)
                      +71
                      Каждого первого. Кто скажет, что не писал кода, за который ему сейчас стыдно, пусть бросит в меня камень.
                        +45
                        писал, но не продавал :)
                          +8
                          писал, продавал, даже пишу и продаю :) а куда деваться, сроки, позднее переделываю если время есть :) стыдно
                            +2
                            Солидарен. Последнее время что-то особенно жестко… Большинству посрать на всё кроме сроков.
                            Вот и получается ситуация про которую еще Райкин рассказывал:… нам платят за коликчество, а не за какчество, так, что скажите спасибо что рукав вместо гульфика не пришили…
                            =(
                              0
                              Ненене… не «посрать на все, кроме сроков», а просто «сроки превыше всего». Очень разные вещи и людей с такой позицией понять очень даже можно.
                            +2
                            Сколько людей поверили :)
                            • UFO just landed and posted this here
                              +2
                              Верно. Но на заре своей юности лично я каждый свой говнокод продавал лишь одному покупателю и стыдился его тиражировать.
                                0
                                Тоже писал… но продавать о_О неее…
                                  +2
                                  да ладно, во время написания разве вы не считали свой код идеальным? :) если не считали -то почему не писали идеально(по вашему мнению). Имхо, это уже опытный программист с миллионами строчек кода может себе позволить написать какие-то вещи влоб и плохо(сознавая это) для скорости лишь бы работали(кто из программеров со стажем не писал быстрых решений например для разового парсинга текста, когда накодить быстрее чем делать руками), а начинающий всегда считает что у него идеальный код :)
                                    0
                                    Да нет, почему, я писал и знал, что здесь надо бы и функции использовать и прочие интересные штуки, но вломы было копаться в доках, чтоб узнать как это оформлять, по этому я был уверен что пишу хуйню, но она работала и я её не продавал :)
                                      0
                                      Вот та же ситуация ))
                                      0
                                      У меня, когда начинал программить, было ощущение несовершенства — вроде все верно, на кусочки разбито логично, работает даже — но что-то не то, поделкой пахнет… потом прошло — но и код переменился :)
                                        +1
                                        я не раз смотрел на код, написанный год или более назад с ужасом, хотя когда писал -казалось все очень неплохо, наверное только последние полтора года ужос притупился или код правильным стал
                              +2
                              да уж, согласен… как то мне попал на глаза код vBulletin, первые 5 минут я был просто в шоке… от количества eval'ов…
                                +2
                                Таким образом у них обрабатываются шаблоны — момент спорный, согласен.
                                В остальном в vBulletin довольно всё прилично
                                  +2
                                  Зато способ этот довольно таки быстрый…
                                  А в остальном, да… После 3.5 они действительно прилично все переписали
                                  –1
                                  eval-ы в версии 2.5 — это единственное, что я почерпнул хорошего из кода. Мы с <~ibear> уже давное перебрали весь fobo.ru, шаблоны до сих пор еваляться.
                                    –1
                                    Чего за минус? Evalы не нравятся? Обоснуй!
                                      +3
                                      eval is evil :)
                                        +2
                                        Это обоснование?
                                          +1
                                          habrahabr.ru/blogs/htranslations/59560/ — все время вспоминаю этот пост, когда в качестве контраргумента приводят минус или шаблонную фразу.
                                          +1
                                          Функция eval — зло потому что она:

                                          1. Работает очень медленно.
                                          2. Не кешируется всевозможными кэшерами опкода (в отличие от того же содержимого, но сохранённого в php файле).
                                          3. Открывает потенциальную дырку в безопасности.
                                          4. Уродлива идеологически, прививает дурные привычки.
                                            +1
                                            1. Я бенчмаркал протим str_replace способа. Медленнее, но не очень. Зато по объему памяти экономнее.
                                            2. Согласен — но мы говорим не о коде всего проекта, а о шаблонах. Отеваленые шаблоны вообще кешировать можно и нужно другими способами.
                                            3. Еще раз уточню, мы говорим о шаблонах.
                                            4. См. пункт 3.

                                            — Сдается мне, что вы не совсем понимаете, как eval используется в качестве шаблонизатора. Сейчас попробую найти небольшой кусочек кода, чтобы продемонстрировать.
                                              0
                                              Я прекрасно знаю, как использовался eval в vBulletin, я с его кодом впервые познакомился 7 лет назад.

                                              2. Я прекрасно понял, что речь только о шаблонах. И тем не менее, eval выполняет очень много шагов (см. сообщение slik ниже), которые будут выполняться даже при наличии кешера. Зачем такое счастье нужно?
                                              3. Я это прекрасно понимаю. Только вот в том же vBulletin шаблоны редактировались пользователем через админку.
                                              4. Дурные привычки от этого не стали хорошими.
                                                +1
                                                Спасибо, с вами интересно поспорить.

                                                2. Чтобы упростить работу с ними. Очень удобно вызывать eval из метода, когда все нужные переменные находятся в области его видимости. Таким образом мы можем использовать средства php (вы же наверняка знаете, что php придумался как шаблонизатор.) для управления потоком вывода (циклы, условия и т.д.), при этом не засоряя бизнес-логику HTML вставками. При этом еще и сам шаблон выглядит очень опрятно.

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

                                                И за весь мой опыт разработки шаблоны через eval ни разу не были бутылочным горлышком. Вот дисковые операции при чтении файлов шаблонов — становились.

                                                3. Простите, я не понял, на что влияет место и способ редактирования шаблонов?

                                                4. Для меня это не привычка, а осознанный выбор.
                                                  0
                                                  2. Чем eval() проще чем include()?

                                                  Сгенерированный html — это хорошо, только на серьёзных проектах, где нужно отдавать по большей части не статику, а активно генерируемый/обновляемый контент, это помогает, но не очень, т.к. динамический шаблон приходится дёргать чаще статического кэша.

                                                  3. По идее, если доступ к админке имеет человек не совсем понимающий что к чему, он не должен суметь наломать дров. Или, если к админке сайта получил доступ «кул хацкер», то он не не должен суметь оставить бекдор. eval же открывает тут широкое поле для злоупотреблений/фатальных ошибок.
                                                    +1
                                                    2. тем что в нем не нужно писать никаких php инструкций, а просто строку HTML-разметки. Это дает ощущение того, что перед вами действительно шаблон, а не кусок недокода.

                                                    3. Мы уже давно ушли от vB и его админки. К шаблонам можно достучаться только по FTP.
                                                      0
                                                      2. Если там исключительно HTML разметка, зачем тогда вообще eval?

                                                      3. Если шаблоны итак лежат файлами на сервере, не проще ли делать include?
                                                        0
                                                        2. Вы же говорите, что видели шаблоны vB. Они примерно такие:



                                                        $thread->name
                                                        $thread->description
                                                        $postList

                                                        3. Следует из 2.
                                                          0
                                                          м2. Вы же говорите, что видели шаблоны vB. Они примерно такие:

                                                          <html>


                                                          <div>$thread->name</div>
                                                          <div>$thread->description</div>
                                                          <div>$postList</div>
                                                          </html>

                                                          3. Следует из 2.
                                                            0
                                                            Хм. Если всё, что нужно — это вставка переменных, то почему бы не использовать heredoc синтаксис?
                                                              0
                                                              Интересная идея. Надо будет поразмыслить. Спасибо.
                                                      0
                                                      Вам не кажется, что даже эту ленту комментариев можно кешировать в html и обновлять по мере появления новых.

                                                      Подкрашивать непрочтенные мной можно средствами JS.
                                                        0
                                                        Можно. Я повторяю: если сайт в основном статичный, то там решает статичный кэш, сохраняющий результаты работы динамического шаблона.

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

                                                        Хай-лоад хай-лоаду рознь :)
                                                          0
                                                          Согласен с вами. Но я все-таки не верю, что использование evala приведет к каким-то фатальным последствиям. Для меня плюсы в удобстве пока выше. Может быть я еще не сталкивался с такой ситуацией, где это бы стало катастрофой.
                                                            0
                                                            Кстати, а как вы шаблонизируетесь?
                                                              0
                                                              Компилирую шаблоны в нативный php (в smarty сделано так же). Шаблонизатор потом эти файлы подключает (он заботится о плагинах, переменных и прочей мишуре).
                                                                –1
                                                                > в smarty сделано так же

                                                                По поводу смарти, производительности и опкод-кэшах.



                                                                talks.php.net/show/perf_tunning/18
                                                                  –1
                                                                  Каким образом картинка сравнения эффективности разных кэшей опкода связана с обсуждаемой темой?
                                                                    0
                                                                    Если посмотреть внимательно, то можно увидеть, что кэшеры не все справляются с кодом. Вы тут приводите пример смарти, как хорошего шаблонизатора. Вы также упоминали про неэффективность эвала, ставя ему это в минус. Эта картинка показывает, что у смарти с эффективностью даже с кэшерами всё плохо.
                                                                      0
                                                                      по моему вы ошиблись, было написано что шаблонизатор TiGR'а компилирует шаблоны в нативный php, как это делает smarty, о использовании smarty TiGR'ом — нислова…
                                                                        0
                                                                        Да, smarty я не использую.
                                                                          0
                                                                          Вот поэтому, очевидно, смарти и показывает жуткую неоптимизабельность кешерами, и поэтому же, то же самое происходит и с шаблонизатором TiGR'а.
                                                                          +1
                                                                          Во-первых, производительность смарти выросла в два раза с кэшерами.

                                                                          Во-вторых, не ясно что именно тестировалось — первичное обращение к шаблонам (компилирование) или повторное использование скомпилированных шаблонов.

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

                                                                          Эта схема показывает не соотношение производительности разных php скриптов, а уровень оптимизации достигаемой при использовании разных опкешей.
                                                                            0
                                                                            > Во-вторых, не ясно что именно тестировалось — первичное обращение к шаблонам (компилирование) или повторное использование скомпилированных шаблонов.

                                                                            Если подумать, то можно понять, что раз измерялось RPS, то ясное дело, что обращения были множественные, а стало быть шаблоны скомпилировались при первом же обращении.

                                                                            > Эта схема показывает не соотношение производительности разных php скриптов, а уровень оптимизации достигаемой при использовании разных опкешей.

                                                                            На примере смарти она показывает, что ни один из более-менее известных кэшеров ему не помогает.

                                                                            По поводу остального — разумно предположить, что смарти был в дефолтной поставке. И размеры шаблонов, скорее всего, были из тестов смарти.
                                                                              0
                                                                              То есть шаблоны были из тестов смарти.
                                                      +1
                                                      расширю первый пункт: работает очень медленно потому что запускает еще один интерпретатор, а это довольно громозко (инициализация, лексический разбор, компиляция в опкод, и, к этому еще, встраивание опкода в основной опкод)…
                                                        0
                                                        Мы вот тут буквально две недели назад с <~ibear> экспериментировали. Заменили eval на include. При включенном xcache разница при генерации была в ~5 миллисекунд при 1000 итераций в пользу include
                                                          0
                                                          include действительно работает почти так же как и eval, но вот средства кеширующие опкод, с eval'ом не умеют пока-что работать…
                                                            0
                                                            Так я и говорю, что опкод-кешер (xcache) не дал значительного преимущества include перед eval
                                                  0
                                                  Теперь понятно почему в названии буква «v». Надо было назвать «evalBulletin».
                                                  +2
                                                  предлагаю сделать доску позора!
                                                    0
                                                    Вы бы прочитали топик про неткат, прежде чем позориться публично.
                                                    +22
                                                    «Поиск» config.ini просто убил xD
                                                    0
                                                    > Ни одного класса в коде не найдено.
                                                    }else $UserChek->BadUserFormaWindow();

                                                    я нашёл =) Кроме шуток, дейстивельно, ужас.
                                                      0
                                                      Я постоянно с таким сталкивался, уже привык. Бывает и не такое, вообще это обычное явления для всяких мелких платных проектов на php типа магазинов, mlm движков и тд. Кстати этот код еще более менее ок) Бывает много хуже.
                                                        0
                                                        ну не сказал бы я, что phpshop такой уж мелкий магазин. по популярности среди народа на втором месте после oscommerce. написан очень криво, верстка вобще не отдается ничему, кроме ие6…
                                                          0
                                                          Первый раз если честно слышу о нем, вернее может натыкался, но не обращал внимание. Да и в гугле на него ссылок на два порядка меньше чем на oscommerce
                                                            0
                                                            Кстати с OsCommerce я сталкивался, тоже довольно неудобен, когда что-то нужно доработать. Мешанина HTML и PHP, генерация input'ов на форме при помощи функций (в упор не понимаю, зачем, там функция места занимает больше, чем та же строка на HTML).
                                                            Правда сталкивался я с ним всего пару раз по мелким заказам, может и есть там какая-то своя логика, но всё равно, первое впечатление сосем не положительное.
                                                            А куски кода, приведённые автором, просто ужасны. Как ТАКОЕ продавать вообще можно? И интересно, как сами авторы в этом хламе разбираются.
                                                              +2
                                                              oscommerce такой же кривой как и phpshop. чуть прямее, но все же. а продавать можно все, что люди покупают. как в одной известной сказке говорилось — покуда есть на свете дураки, обманом жить нам, стало быть, с руки… правда тут не обман, а чистой воды халтура, но суть та же.

                                                              от этой кривизны, кстати, так часто и появляется желание создания собственной модульной CMS, но продуманной на все 100%(по мнению создателя).
                                                          0
                                                          В свое время дали заказ на смену дизайна(вместе с версткой дизайна) в нем…
                                                          Очень долго и мучительно разбирался в этом чуде. Некоторые вещи даже не понятно как работали.
                                                          Подумал — может скрипт не полная версия, какого же мое удивление было, оказалось что заказчик лицензию покупал к этому чуду и код действительно такой о_О
                                                            0
                                                            поддерживаю про PHPShop. Это ужасно… просто ужасно.
                                                            Пришлось как-то исправлять ошибку в коде (заказчику надо было очень срочно)… просто каша из пхп и хтмл.
                                                              +1
                                                              Это еще коммерческий — коробочный… А было сайт переделывал… Там элементы массива проверялись каждый по отдельности (без использоваия цикла) со 100%-ым дублированием кода…
                                                                +1
                                                                всмысле так?
                                                                if ($arr[1] == 1) {}
                                                                if ($arr[2] == 1) {}
                                                                  0
                                                                  Именно…
                                                                    0
                                                                    а большой массив был? :)
                                                                      0
                                                                      10 элементов… В общем обработчик формы с 10-ю полями для загрузки картинок…
                                                              +2
                                                              какое убожество
                                                                +16
                                                                если «пипл хавает», то его продают, если оно выполняет свою задачу, то клиент доволен и ему глубоко плевать что там в коде кружочки или треугольнички…

                                                                с точки зрения программера, да код не есть гуд.
                                                                  +1
                                                                  Да, но как с таким подходом к кодингу учесть возможную «дырявость»?
                                                                    +3
                                                                    ну не факт, что она учитывалась, да и если знать как и что закрывать. то это можно сделать при любом подходе.
                                                                      0
                                                                      С учётом того что это коробочный продукт, количество взломов сайтов с этой поделкой должно приближаться к 100%.
                                                                    +4
                                                                    Наверняка клиент будет доволен до первого изменения на сайте. Когда изменения начнут влетать в копеечку ;-)
                                                                      +1
                                                                      Потому, наверное, разработчики и затребовали «непомерную сумму» ))
                                                                    0
                                                                    Возможно, авторы сего продукта будут мотивировать такой подход к делу тем, что «не важно как это написано, главное — что оно работает». Быстрей бы денюжку срубить.
                                                                      0
                                                                      Так поддерживать это убожество сложнее, чем хорошо структурированый код(ооп и тд). Компания могла бы сэкономить на программистах и уменьшить сроки разработки.
                                                                        +10
                                                                        /Сарказъм:
                                                                        Как видим, компания уже сэкономила на программистах. Возможно, и сроки урезали.
                                                                          +3
                                                                          Есть мнение, что в компании вообще один программист и он на себе не экономит :)
                                                                            0
                                                                            Что поделать — кризис, кризис
                                                                      +1
                                                                      Ради интереса посмотрите cs-cart.com, я рад что принимал там участие непосредственное. Каждая мелочь отточена была — мне на самом деле любопытно мнение разработчиков.
                                                                        0
                                                                        И чем он лучше ViArt?
                                                                          +5
                                                                          Если я отвечу чем — это будет моё и наверняка необъективное мнение так как я делал работу с большим удовольствием. Я не пытаюсь пропиарить продукт — он итак сильно на ногах держится без моего комментария на хабре. Просто мне хочется элементарно чтобы другие разработчики посмотрели на продукт который делали с любовью к своей работе, с большой отдачей.
                                                                            0
                                                                            Ну, если Вы мне ответите в личку, я может быть не буду покупать ViArt, как собирался, а куплю cs-cart. Но только если он лучше. Если нет — можете не отвечать :)

                                                                            P.S. PHPShop — ужос. Сразу отмёл его в качестве платформы для магазина.
                                                                              0
                                                                              а можно узнать, почему не вариант, например, magento?
                                                                                0
                                                                                Ну, как Вам сказать… Тяжеловат, медленноват и с непонятной политикой платности/бесплатности. Как-то так :-)
                                                                                  0
                                                                                  На самом деле политика очень даже понятная. Открытая лицензия, а создатели зарабатывают на поддержке и доработке. Т.е. если хватает квалификации самому поставить-настроить-доработать, то можешь смело и бесплатно пользоваться.

                                                                                  А что тяжеловат и медленноват — это да. Требования у него (в том числе и к квалификации) неслабые. Но и мощный соответственно.
                                                                                    0
                                                                                    мы сейчас просто рассматриваем вариант миграции, и выбираем между мадженто и виартом. не можем решить.
                                                                                    медленность там решаема, если верить постам в коммьюнити. в планете тяжести — если вы о том, что в нем очень много всего, то я вот не уверена, что это минус… хотя разобраться поначалу непросто, но потом все знаешь:)
                                                                                    а в политике мне только непонятна жуткая цена за enterprise edition, но она меня не касается:)
                                                                                  0
                                                                                  Бегло ознакомился. Код, похоже, заточен под PHP4. ООП не используется. Часть кода закрыта через Zend Optimizer. Оформление исходников нормальное, но вот такие куски просто убивают:

                                                                                  if ($setting_name == «site_map_block») {
                                                                                  include_once("./blocks/block_site_map.php");
                                                                                  site_map($setting_value);

                                                                                  } elseif (preg_match("/^a_subcats_(\d+)$/", $setting_name, $matches)) {
                                                                                  articles_categories($setting_value, $matches[1], "", «a_subcats»);
                                                                                  } elseif (preg_match("/^a_search_(\d+)$/", $setting_name, $matches)) {
                                                                                  articles_search($setting_value, $matches[1], "");
                                                                                  }

                                                                                  Дизайн просто никакой. Верстка местами неряшливая (см. меню Orders). Много, на мой взгляд, лишнего функционала (Forum, CMS, HelpDesk). Если вам реально нужны такие вещи, стоит подумать о Joomla+VirtueMart+компоненты.

                                                                                  Руссификация… Блин, лучше бы ее вообще не было. К тому же браузеру кодировка не отдается, из-за этого я вижу строки типа "Öåíà". Очень грубый прокол.

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

                                                                                  Понравилась задумка с «Options & Components». Как я понял, через Options можно можно указать, что у вас на складе, скажем, 8 футболок белого цвета и 4 красного. Другие движки тоже позволяют задать параметры товара, но без привязки к количеству. Как результат, «Извините, футболки данного цвета уже нет на складе». Даже в cs-cart такого не нашел. На этом достоинства заканчиваются.

                                                                                    0
                                                                                    извините, а вы про какой магазин сейчас говорили? и, кстати, в cs-cart последняя фишка тоже есть — option combinations называется
                                                                                      0
                                                                                      Я говорил про ViArt. Большущее спасибо за наводку насчет option combinations, проверю.
                                                                                        0
                                                                                        не за что, если глубже начать изучать cs-cart, то столько всего еще полезного можно найти )
                                                                              +1
                                                                              Да, сейчас cs-cart выглядит неплохо, существенно получше, чем x-cart. :)
                                                                                0
                                                                                о… в 2004 году x-cart была просто песТня)
                                                                              • UFO just landed and posted this here
                                                                                  0
                                                                                  смотрим на cscart год, тоже не фонтан, честно говоря. бизнес-логика в темплейтах, сериализованные массивы в БД (когда часто надо только одно из их полей), выдача AJAXом целой страницы ради смены одного поля (и парсинг всего этого HTML)…
                                                                                  да и 400 запросов при создании главной страницы немного удивили.
                                                                                    0
                                                                                    Вы вероятно смотрели старую версию. Она существенно обновилась.
                                                                                      0
                                                                                      скорее всего.
                                                                                      в нашем случае, однако, это не помогает — мы делали очень много кастомизаций, в т.ч. починку багов, и нам сейчас обновиться будет очень непросто.
                                                                                    0
                                                                                    Не уверен что прям совсем каждая.
                                                                                    «В наличии: 50 штук(-а)» — так штук или штука?
                                                                                    «Поиск товара или выбрать» — прикольно звучит, но открывается почему-то выбор из артикула, а не из товара.

                                                                                    И таких мелочей еще много :(

                                                                                    Хотя в целом довольно неплохо
                                                                                      0
                                                                                      Выглядит красиво, но сразу нашел косяк — на странице demo.cs-cart.com/ картинки у продуктов больше чем указано в <img width="" height>. Демо сайт вроде на русском, а выбор валюты ограничивается долларами, евро и фунтами, мелочь конечно, но неприятно.

                                                                                      А чтобы судить о внутреннем устройстве, нужно его сначала увидеть. Где можно посмотреть исходники?
                                                                                        0
                                                                                        Должна быть доступна для скачки триалка. По поводу языка и валюты — магазин ориентирован на западный рынок. Но перевести не проблема — там просто всё.
                                                                                          –2
                                                                                          Нехорошо с вашей стороны предлагать гемморой читателям хабра. Если уж сказали оценить, то дайте ссылку на исходники. Я потратил время на регистрацию, и увидел что меня просто послали:

                                                                                          Free 60-day trial version
                                                                                          Download failed.

                                                                                          Your download request could not be processed as the specified store URL is already registered in our license database and there is a full commercial CS-Cart license issued for this website URL.
                                                                                            0
                                                                                            может быть стоит прочитать, что написано в «послали»?
                                                                                              +1
                                                                                              URL другой надо было указывать. Я как раз вчера скачал без проблем. Кстати, поставить таки не смог. На этапе подготовки БД ошибка в скриптах. Но это дело поправимо, обязательно добью. Чертовски хочется на cscart изнутри посмотреть. Продукт заинтересовал приятным дизайном. Админка настолько удобна, что все клоны osCommerce просто отдыхают.
                                                                                          +1
                                                                                          Мнение менеджера web-проектов. =)

                                                                                          Скин написан на Smarty. Вставок кода не заметил. Вёрстка блочная. Форматирование исходников аккуратное. Система именования переменных внятная, соответствует стандартам. ООП используется, но без фанатизма.

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

                                                                                          Нашел и недостатки. Проблемы при установке под Windows. Сразу видно что линуксоиды писали. Товар в корзину можно положить без уточнения атрибутов, что не есть хорошо. «В наличии: 50 штук(-а)» действительно режет глаза.

                                                                                          В целом же продукт на редкость добротный. Снимаю шляпу перед ребятами из Simbirsk Technologies.
                                                                                            –1
                                                                                            Код не смотрел, но фронтЭнд очень порадовал, все продумано и правда с любовью делали
                                                                                            вобщем зачет
                                                                                            +4
                                                                                            написано конечно страшненько, но ведь работает! =)
                                                                                              +14
                                                                                              работает конечно страшненько, но ведь написано! =)
                                                                                                +37
                                                                                                страшненько конечно страшненько, но ведь страшненько!!!
                                                                                                +3
                                                                                                работает-то работает, но вот сколько программистов намучились с доделыванием таких поделок
                                                                                                  +2
                                                                                                  им за это деньги платят.
                                                                                                    +1
                                                                                                    они за это деньги получают ))
                                                                                                      0
                                                                                                      И мы за доделывание получаем хорошо же )))
                                                                                                0
                                                                                                «Имя стола базы записей». Блеск. Степан, спасибо, порадовали всю нашу компанию :)
                                                                                                  –4
                                                                                                  зато они его продают… кажется это зависть :) но конечно на уязвимости Вам следовало сообщить им прежде чем публиковать код на удаление записей ;) так это похоже на вредительство
                                                                                                    +1
                                                                                                    это в админке.

                                                                                                    сообщать о тысячах уязвимостей в коде я не считаю возможным. кроме того, данный код легко получить всем, кому интересно.
                                                                                                      +2
                                                                                                      Вредительством было бы замалчивать от потенциальных покупателей ужасное качество продукта.
                                                                                                    • UFO just landed and posted this here
                                                                                                        0
                                                                                                        $sql=«UPDATE ».$SysValue['base']['table_name27']."
                                                                                                        SET
                                                                                                        login='$login_new',


                                                                                                        Голубая мечта хакера. :)

                                                                                                        Но массив с индексами типа 'table_name27' наводит на мысль: а не были ли отдельные части кода сгенерированы каким-то автоматическим средством?
                                                                                                          0
                                                                                                          javascript-пакеры подобным образом кромсают названия переменных (с php-пакерами не встречался :) )… но тут… чтото сомневаюсь
                                                                                                            +1
                                                                                                            Да, хакерам скидки :)
                                                                                                              +1
                                                                                                              Тоже вначале подумал про кодогенерацию, но «характерные» комментарии вкупе со стилем включения других файлов заставили отбросить эту версию. Да и на job security не похоже.

                                                                                                              В этом продукте маркетинг явно превалирует над техничесткой составляющей.
                                                                                                              +1
                                                                                                              «Индус», однако, это не национальность.
                                                                                                                0
                                                                                                                Ну да, указание на религию никогда и не было национальностью.
                                                                                                                –25
                                                                                                                интернет-магазин на пэ-ха-пе работает, да? а написан, стало быть, криво, да? и тем не менее работает? хм… чу-де-са!
                                                                                                                  +1
                                                                                                                  ^_^
                                                                                                                    +4
                                                                                                                    Хуйню сморозивши?
                                                                                                                    PHP это инструмент, и я осмелюсь сказать — хороший, годный инструмент в правильных руках грамотных разработчиков. И на С можно навернуть такого, что лобковые волосА дыбом встанут.
                                                                                                                      0
                                                                                                                      Как же запарили эти тролли! Если ты быдлокодер, то хоть php, хоть java — все равно будешь писать быдлокод!
                                                                                                                      +2
                                                                                                                      У одной моей знакомой небольшой, но очень гордый магазинчик, сделанный на сабдже. Несколько раз она просила там что-то подправить, несколько раз я, перекрестившись, лез в этот код и плакал.
                                                                                                                      Однажды неразобравшись в хитросплетениях кода, я обратился к разработчику за документацией по API. Был получен ответ (дословно): «Если будет что-то непонятно в коде — Вы у нас спрашивайте».
                                                                                                                      Мои рыдания стали слышны у соседей. А знакомую всё боись расстраивать, что она не очень разумно потратила деньги.
                                                                                                                        0
                                                                                                                        Только по-моему это shop-script, а не PHPshop.
                                                                                                                          +1
                                                                                                                          shop-script не менее ужасен. Я ниже о нём немного написал.
                                                                                                                            0
                                                                                                                            сто пудов, одна верстка чего стоит… в бесплатной версии, но оно работает! :)
                                                                                                                              0
                                                                                                                              Вёрстка, да, тоже — находил там нарушения табличной структуры. То ли забытые td, то ли ещё что-то. Уже не помню точно.
                                                                                                                              А работает оно ровно до первого решившего проверить на инъекции ^..~
                                                                                                                        • UFO just landed and posted this here
                                                                                                                            +1
                                                                                                                            да, с shop-script сталкивался
                                                                                                                            говнище то еще
                                                                                                                          • UFO just landed and posted this here
                                                                                                                              +1
                                                                                                                              Програмеров и правда этот код заставляет ужасаться. Я без лазания в код был в легком шоке от требований — PHP4, register globals on. Потом еще увидел админку на фреймах и дизайн интерфейса в стиле helloWin'98. И мне тогда все стало ясно. А сейчас еще и сорцы =)

                                                                                                                              Но в нем есть некоторые + для комерсов — это наличие встроенной из коробки связки с 1С и прочие подобные вещи. Видимо по этому и берут — альтернатив за те же деньги нет. Или есть?
                                                                                                                                0
                                                                                                                                Альтернатива есть, не сочтите за рекламу :) promofront.ru
                                                                                                                                  0
                                                                                                                                  А где скачать и посмотреть код?
                                                                                                                                  «Мы бесплатно сделаем вам сайт (с магазином) и бесплатно разместим в сети. А платно будем только продвигать.»
                                                                                                                                  Кто из заказавших может составить отзыв о качестве?
                                                                                                                                +6
                                                                                                                                password='".base64_encode($password_new)."',
                                                                                                                                Это что-то новенькое.
                                                                                                                                  +4
                                                                                                                                  Шоб никто не догадался! Видимо им не рассказывали что base64 это как-бэ обратимый алгоритм и хранить в нем пароли как-бэ не кошерно
                                                                                                                                    –16
                                                                                                                                    MD5 тоже обратимый, в принципе. Правда, обратить его очень сложно…
                                                                                                                                      +5
                                                                                                                                      Мне аж интересно стало, может вы напишете статью где осветите этот животрепещущий вопрос?
                                                                                                                                        –14
                                                                                                                                        Ну может быть и статью следует написать… Но, к слову сказать, MD5 — открытый алгоритм шифрования :) А разработан он настолько профессионально, что дешифровать его очень и очень сложно. Все приходят к выводу, что якобы невозможно.
                                                                                                                                          +12
                                                                                                                                          md5 это алгоритм не шифрования, а подсчета контрольной сумы :)
                                                                                                                                          интересно как вы «дешефрируете» 4.5Гигабайтовый образ DVD диска из 40-символьного хеша? :)
                                                                                                                                            –12
                                                                                                                                            Блин, я «обывательскими» понятиями фигурирую :) Спасибо за просветление.
                                                                                                                                            • UFO just landed and posted this here
                                                                                                                                              +4
                                                                                                                                              32 символьного, если точнее.
                                                                                                                                              +3
                                                                                                                                              это хэшалгоритм, его невозможно дешифровать в прямом значении этого слова, можно подобрать коллизию, но не больше.
                                                                                                                                                +2
                                                                                                                                                Вы ошибаетесь, у md5 есть уязвимость, можно подобрать коллизии(т.е. найти другую строку, которая дает такой же хэш), но это не значит, что вы сможете получить строку по которой был сделан md5-хэш.

                                                                                                                                                ЗЫЖ логически подумайте, размер строки получаемый после применения вами «функции» md5, к любому тексту(пусть он хоть 100МБ), всегда одинаковый, если можно было сделать обратное преобразования, то получили бы идеальный архиватор :)
                                                                                                                                                –10
                                                                                                                                                В принципе, это никому ещё и не удалось, получается. Но суть в том, что это открытый алгоритм шифрования. Никто не знал? о_0
                                                                                                                                                  0
                                                                                                                                                    –3
                                                                                                                                                    Ну да, это явное преимущество. Но представить только, что пароль от 6 до 16 символов в длину, например. А из хэша мы получаем список соответствующих ему входящих значений… Во сколько раз вырастает вероятность узнать пароль?
                                                                                                                                                      +1
                                                                                                                                                      да станет полегче.

                                                                                                                                                      75d2c6d2283f7b76f402e5f022f67032
                                                                                                                                                      когда вкскроете маякните ок?

                                                                                                                                                        0
                                                                                                                                                        *вскроете
                                                                                                                                                          –2
                                                                                                                                                          Ну к тому времени я уже про этот пост забуду.

                                                                                                                                                          Жопа в том, что подобрать входящие строки (с учётом появления функции «unmd5» какой-нибудь, которая бы возвращала массив с подходящими значениями) для md5(md5('[password]').md5(md5('[password]'))) не очень-то возможно.
                                                                                                                                                            0
                                                                                                                                                            да
                                                                                                                                                              +4
                                                                                                                                                              Вы идиот и не лечитесь.
                                                                                                                                                              Давайте я щас придумаю простой «открытый алгоритм шифрования», а вы мне расшифруете результат его работы.
                                                                                                                                                              Итак алгоритм: берем остаток от деления числа на 5. Использовав этот «алгоритм шифрования» на каком-то числе, я получил 3. У вас есть «открытый алгоритм шифрования», есть результат работы этого алгоритма. Попробуйте восстановить исходное число.
                                                                                                                                                                –5
                                                                                                                                                                А Вы дебил? Я сказал, что он простой?
                                                                                                                                                                  +1
                                                                                                                                                                  Вы же сказали что для «сложного» MD5 вам понадобится много времени. Так обратите хотя бы «простой» алгортим.
                                                                                                                                                              +1
                                                                                                                                                              Я прав? «Parlament» :)
                                                                                                                                                              +1
                                                                                                                                                              Parlament?
                                                                                                                                                                +1
                                                                                                                                                                да, но если б его не было в rainbow таблицах то перебирать оч долго.
                                                                                                                                                                0
                                                                                                                                                                Parlament

                                                                                                                                                                :)
                                                                                                                                                        +1
                                                                                                                                                        подскажите метод :) хотя бы ссылку, где есть метод обратной функции MD5
                                                                                                                                                          0
                                                                                                                                                          Брутфорс по словарям.
                                                                                                                                                            0
                                                                                                                                                            интересный способ «обращать» :)
                                                                                                                                                              –4
                                                                                                                                                              Ага. Как обратить ещё не придумали (дело времени). Поэтому пока что этим методом ограничиваются.
                                                                                                                                                                +1
                                                                                                                                                                Вон, чуть выше говорят, мол, интересно, как вы «дешефрируете» 4.5Гигабайтовый образ DVD диска из 40-символьного хеша? :)
                                                                                                                                                                Пока что я читал про пару уязвимостей md5-sha-подобных хэшей. И это были уязвимости из разряда коллизий, т.е. практической пользы с этих уязвимостей ровно ноль.
                                                                                                                                                                0
                                                                                                                                                                Дык хэш-алгоритмы потому и могут только по словарям взламываться, что изначально создавались как необратимые.
                                                                                                                                                                +1
                                                                                                                                                                ну тогда куда уже без такого полюбившегося способа, как терморектальный криптоанализ.
                                                                                                                                                                  0
                                                                                                                                                                  Это же не наш метод :)
                                                                                                                                                                +3
                                                                                                                                                                echo unmd5(md5('imps')); ;)
                                                                                                                                                                  0
                                                                                                                                                                  Так смешенее:

                                                                                                                                                                  echo unmd5(md5(file_get_contents('[ну а тут путь к образу какого нить DVD]')));
                                                                                                                                                                    +1
                                                                                                                                                                    strlen(md5(file_get_contents('[ну а тут путь к образу какого нить DVD]')))) === strlen(md5(file_get_contents('[FDD 3,5inch]'))));

                                                                                                                                                                    «Зачем платить больше?»
                                                                                                                                                                0
                                                                                                                                                                MD5 какбэ хэш-алгоритм
                                                                                                                                                              +2
                                                                                                                                                              Просто ребята задумались, как бы получить из пароля кашу, и уметь его проверять. Каша из base64 видимо их визуально устроила. Никто ж не догадается, фигле :)
                                                                                                                                                                +1
                                                                                                                                                                Идея в другом — вместо того, чтобы сделать обнулялку админских паролей, они сделали подстматривалку, т.е. по факту бэкдор. Если бы пароли шифровали не бейзом, а мд5, то получить список паролей они бы не могли, а следовательно не могли бы осуществлять «недокументированную техническую поддержку» :)
                                                                                                                                                              +4
                                                                                                                                                              Умение продать себя и свои услуги зачастую компенсирует качество продукта.
                                                                                                                                                                –1
                                                                                                                                                                например мелкомягкие?
                                                                                                                                                                +1
                                                                                                                                                                Да вы ничего не понимаете, ребята же бабки зарабатывают. $)
                                                                                                                                                                  –13
                                                                                                                                                                  ну норм) я думал что все пшп-ники так пишут) обычно когда я работаю с пшп проектами там такая каша)

                                                                                                                                                                  просто удивительно, что вас, пшп девелопера это еще и удивляет)
                                                                                                                                                                    +7
                                                                                                                                                                    Очень приятно осознавать, что я не отношусь к такой категории пшп-ников :)
                                                                                                                                                                      0
                                                                                                                                                                      увы, не вы один так думаете… что пхп — такой вот мерзкий язык, а те, кто на нем пишут — недопрограммисты.
                                                                                                                                                                      грустно.
                                                                                                                                                                        –13
                                                                                                                                                                        на самом деле пшп не такой уже плохой, в плане синтаксиса

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

                                                                                                                                                                        да и нет, первоначальной заточки для разделение на презентацию, бизнес-логику, и базу данных

                                                                                                                                                                        вот и по этому такой гавно код)
                                                                                                                                                                          0
                                                                                                                                                                          эээ… обычно такое разделение все же на уровне фрэймворков появляется. Что в яве или си шарпе, как в языке, заточено?
                                                                                                                                                                            –4
                                                                                                                                                                            ну ясное дело что нет)

                                                                                                                                                                            но первоначально с этими языками идет какой то дефолтный фреймворк
                                                                                                                                                                              +3
                                                                                                                                                                              Ну… Zend Framework, можно считать почти дефалтным :) От разработчиков ПХП, а если берете платформу зендовскую, то он там даже в дистрибутив входит. На ПХП есть несколько достаточно мощных фрэймворков — есть из чего выбрать.

                                                                                                                                                                              Повторюсь. ПХП виноват лишь в том, что позволяет писать такой код, но он же позволяет и писать качественно более высокий, не уступающий явовскому или сишарпному. Зависит от программистов.
                                                                                                                                                                            0
                                                                                                                                                                            > но то что он интерпретируемый

                                                                                                                                                                            кому-то это мешает? вы решаете на нём урчп чтоли, чтобы вам производительность самого интерпретатора мешать начала?

                                                                                                                                                                            > да и нет, первоначальной заточки для разделение на презентацию, бизнес-логику, и базу данных

                                                                                                                                                                            а где она есть? кто мне мешает сделать:

                                                                                                                                                                            int main(int argc, char *argv[]) {
                                                                                                                                                                            printf("Цэ какбэ не имеет первоначальной заточки на разделение чего-то там, про что я слышал где-то там");
                                                                                                                                                                            }

                                                                                                                                                                            > вот и по этому такой гавно код)

                                                                                                                                                                            такой говнокод не потому.

                                                                                                                                                                            > на самом деле пшп не такой уже плохой, в плане синтаксиса

                                                                                                                                                                            еще один судитель языков по синтаксису, сколько же вас развелось…
                                                                                                                                                                              0
                                                                                                                                                                              В коде на цэ внутри printf-а тэги. Их пожрал пхп-парсер хабра из расовой справедливости :)
                                                                                                                                                                                –3
                                                                                                                                                                                та не, я безумно люблю пшп)
                                                                                                                                                                                +2
                                                                                                                                                                                в Zend Studio for Eclipse более чем адекватный дебаггер/профайлер, примерно такой же в NuSphere PhpEd (только для Win/Linux), но в студии все равно получше и покачественнее
                                                                                                                                                                              +2
                                                                                                                                                                              написать кривой и не грамотный код можно абсолютно на любом языке
                                                                                                                                                                                +1
                                                                                                                                                                                Но почему-то на PHP он встречается в разы чаще, чем на других языках.
                                                                                                                                                                                  +3
                                                                                                                                                                                  Потому что низкий порог входа. Попробуйте на C++ начать начать что-то писать за 2 дня.
                                                                                                                                                                                    +5
                                                                                                                                                                                    Да я и сам это прекрасно знаю. Просто оправдывать похапе тем, что на других языках тоже можно писать говнокод, как-то неправильно.
                                                                                                                                                                                    ПХП всегда был языком быдлокодеров, и всегда будет им. Такова идеология этого языка, и именно благодаря ей он и стал популярным. Конечно, иногда из этих быдлокодеров вырастают нормальные программисты, но это уж очень большая редкость. Иногда нормальные программисты специально переходят на PHP, т.к. на нём проще зарабатывать, но опять-таки это никак не говорит о качестве самого языка. Вы можете назвать еще какие-нибудь преимущества PHP по сравнению с другими подобными языками, кроме низкого порога вхождения?
                                                                                                                                                                                      +3
                                                                                                                                                                                      PHP нельзя ни обвинять ни оправдывать. Нельзя обвинить бейсбольную биту в том что ей проламывают головы, а не отбивают мячик. Нельзя обвинить паяльник в том что его используют как криптоанальный дешифратор. Так до бесконечности.

                                                                                                                                                                                      Вы правы в том что так как PHP легок в освоении, то очень много кода написано на нем, соответственно и быдлокода в том числе.

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

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

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

                                                                                                                                                                                        +2
                                                                                                                                                                                        Да, вы правы, если рассматривать сферический PHP в вакууме — то это действительно не такой уж и плохой язык (по крайней мере последние версии). Но также как к недостаткам линуксов часто относят отсутствие фотошопов, точно также к недостаткам похапе можно отнести огромное количество говнокода, от которого никуда не деться.
                                                                                                                                                                                        Если сравнивать PHP, Python, Perl и Ruby, я могу назвать только два преимущества PHP перед остальными:
                                                                                                                                                                                        1. Легкость изучения и простительность к ошибкам.
                                                                                                                                                                                        2. Большая распространенность и огромное кол-во уже готовых решений.

                                                                                                                                                                                        Но если вы пишете хороший код — первый пункт вам будет безразличен. Если же вы хотите всегда избегать плохого кода — тогда и от второго пункта тоже придется отказаться. В итоге я просто не вижу преимуществ PHP перед другими языками. В то время как преимущества других языков я вижу довольно чётко.
                                                                                                                                                                                          +1
                                                                                                                                                                                          3. Распостраненность на хостингах. Решает, знаете ли.
                                                                                                                                                                                          4. Скорость работы — не так и плоха.
                                                                                                                                                                                          5. Простота простых операций. Работа с массивами и строками максимально проста. Можно конечно сравнить с Руби и увидеть, что в РНР ужасающие по своей хаотичности сигнатуры стандартных функций, и ограниченность через отсутствие лямбда-функций, но это такое. Портит впечатление, но не критично.
                                                                                                                                                                                            +1
                                                                                                                                                                                            Лямда теперь вроде есть.
                                                                                                                                                                                            0
                                                                                                                                                                                            Что вы так на php нападаете? Он вам сделал что-то?
                                                                                                                                                                                              0
                                                                                                                                                                                              ИМХО PHP мешает популяризации более достойных языков. Много хорошего можно сделать на Django или RoR, но большинству заказчиков нужен «сайт на похапе».
                                                                                                                                                                                                +2
                                                                                                                                                                                                Ужас! Но наверное тому есть причины. И то что вы говорите, можно перевести в другую область, сказав «столько всего можно написать на дельфях, но заказчик требует .NET», ну или наоборот «это можно написать на Джаве, но надо C++ и WinAPI».

                                                                                                                                                                                                Вообщем, пишите на Symfony, он во многом приближается к Рельсам, во много превосходит их. Так что это не проблема языка, а платформы. Поверьте, под РНР есть хорошие фреймворки.
                                                                                                                                                                                                  +3
                                                                                                                                                                                                  Касательно RoR например, выдержка из rubyonrails.org/deploy очень многое говорит «по сути»:
                                                                                                                                                                                                  Prior to Passenger, Rails was mostly deployed using Apache or nginx with either a built-in or standalone proxy (like HAProxy) against a CLUSTER of Mongrels or Thins.
                                                                                                                                                                                                  Как бе кластер (особенно в России) может позволить себе далеко не каждый высоконагруженный проект. Я уверен, что тот же «вконтакте» не выпулил бы, изволь они делать решение не на PHP, а на ruby on rails.
                                                                                                                                                                                                    0
                                                                                                                                                                                                    Т.е. вы хотите сказать что веб-сервер на Ruby быстрее чем веб-сервер на Си? Спасибо, но я это и без вас прекрасно понимаю. Насколько мне известно, преимущества Mongrel не в скорости, а в легкости масштабирования и всяких других фичах. Иногда железо стоит дешевле программистов.
                                                                                                                                                                                                    И кстати, как я понял, под кластером в данном случае подразумевается одна машина, на которой запущено несколько инстансов сервера. Думаю что даже в России, любой высоконагруженный проект располагается не менее чем на одной машине :)
                                                                                                                                                                                                      0
                                                                                                                                                                                                      s/быстрее/медленнее/
                                                                                                                                                                                                        0
                                                                                                                                                                                                        > Т.е. вы хотите сказать что веб-сервер на Ruby медленнее чем веб-сервер на Си?
                                                                                                                                                                                                        Простите, не понимаю, как из моего комментария выше можно было сделать подобный вывод — я имел в виду только то, что RoR СУЩЕСТВЕННО медленее PHP, а в большинстве случаев расход времени (который является следствием мощи RoR для прикладных задач) совершенно неоправдан с точки зрения возможности более быстрой (во всех смыслах) реализации этих же задач на PHP.
                                                                                                                                                                                                        Я скажу за себя — очень многие «фичи» RoR я сам реализовал (не под влиянием причем, а совершенно самостоятельно довольно давно, для себя, и только недавно с лешким удивлением и беспокойством обнаружил RoR) на PHP, и пхпшное решение, хоть и далеко по красоте пока что от RoR, тем не менее быстрее его (сейчас как раз занимаюсь капитальной оптимизацией вплоть до пресловутых «ноль запросов на страницу»)

                                                                                                                                                                                                        > под кластером в данном случае подразумевается одна машина
                                                                                                                                                                                                        Ммм, кластер — это все таки кластер (http://ru.wikipedia.org/wiki/Кластер)
                                                                                                                                                                                                          0
                                                                                                                                                                                                          1. В процитированной вами фразе (кстати вырванной из контекста) говорится о преимуществах разворачивания RoR на Mongrel/Thin вместо Apache/nginx. Как можно делать выводы о скорости RoR из разговора о веб-сервере? Более того, RoR изначально позиционировался как фреймворк, в котором удобство разработки и сопровождения приоритетнее производительности, поэтому глупо судить его за низкую скорость.

                                                                                                                                                                                                          2. Я прекрасно знаю что такое кластер. Но в данном случае важно не то, что написано в Википедии, а то, что разработчики имели ввиду. И под кластером в данном случае подразумевается несколько веб-серверов, вне зависимости от того, на скольки машинах они располагаются. Например можно взять 3 машины, и на каждой запустить 5 Mongrel'ов. А можно запустить 15 Mongrel'ов на одной машине. В обоих случаях это будет считаться кластером.
                                                                                                                                                                                                            0
                                                                                                                                                                                                            1. Кто сказал, что лично я вывод о скорости сделал из разговора о веб-сервере? Я прекрасно знаком с предметом, и знаю отлично его слабую сторону (точнее, одну из).

                                                                                                                                                                                                            2. Какой сакральный смысл в запуске 15 Mongrel'ов на одной машине? Mongrel что, не умеет форкаться?
                                                                                                                                                                                                              0
                                                                                                                                                                                                              1. Тогда на что вы хотели указать, цитируя фразу о том, что RoR проще развернуть и настроить на кластере из Mongrel чем на Apache. Ключевые слова: «проще развернуть и настроить». Я наверное совсем тупой, но я не понимаю, на какие именно недостатки RoR это должно было указать.

                                                                                                                                                                                                              2. Под Apache/nginx тоже запускают несколько процессов Mongrel'а, и балансируют запросы к ним. Такие дела.
                                                                                                                                                                                                      +2
                                                                                                                                                                                                      Виндовс мешает популяризации лиункса.
                                                                                                                                                                                                      Английский мешает популяризации наречия нанду.
                                                                                                                                                                                                      Иностранный автопром мешает популяризации российского.

                                                                                                                                                                                                      С народным выбором еще сложнее бороться чем с ветряной мельницей.

                                                                                                                                                                                                      Если вам не нравится PHP, не используйте его. Хотите популяризовать другие технологии — учавствуйте в их распространении.

                                                                                                                                                                                                      Да, кстати, уже много раз писали, что сравнивать PHP с Django или RoR нельзя. Так как первое — это язык, а второе и третье — фреймворки.

                                                                                                                                                                                                      Мне вот, например, неприятны принципы питона, на Django мне писать тяжело. А к руби я присматриваюсь.
                                                                                                                                                                                                        0
                                                                                                                                                                                                        Я не сравниваю Django/RoR с PHP. Просто заказчиков отпугивает не фреймворк, а язык. Т.е. я хочу например писать на Python/Django, а заказчик согласится только на PHP/что_угодно.
                                                                                                                                                                                                          0
                                                                                                                                                                                                          У меня вот как-то складывается наоборот пока, в смысле, что я сам _привык_ к PHP и пишу на нем быстрее, чем комменты на хабре оставляю, а вот заказчики иногда выдвигают жестокое требование типа «только Perl, и ничего другого», и это прекрасно.
                                                                                                                                                                                                            0
                                                                                                                                                                                                            odesk, количество предложений о работе:
                                                                                                                                                                                                            PHP: 1160
                                                                                                                                                                                                            Perl: 35
                                                                                                                                                                                                            Python: 49
                                                                                                                                                                                                            Ruby: 85
                                                                                                                                                                                                            Даже если знать перл, руби, и пайтон вместе взятые, все равно гораздо проще найти работу на PHP.
                                                                                                                                                                                                              +1
                                                                                                                                                                                                              Ну вы сравнили, сайт для фрилансеров, где заказчики «по умолчанию» выбирают наиболее предпочтительного быдлокодера, и серьезные проекты в студиях.
                                                                                                                                                                                                        0
                                                                                                                                                                                                        Если вы говорите о Django и RoR, то надо их сранивать с ZF как минимум.
                                                                                                                                                                                                      0
                                                                                                                                                                                                      > 1. Легкость изучения и простительность к ошибкам.

                                                                                                                                                                                                      У меня в режиме отладки выводятся даже suppressed errors, те которые c @ (так как использвоание @ в общем дурная практика), и тем более, любой нотис или варнинг завершает скрипт. Разве можно писать как то по другому?

                                                                                                                                                                                                      > 2. Большая распространенность и огромное кол-во уже готовых решений.

                                                                                                                                                                                                      Тут да, проблема, неизвестно как написано то или иное расширение. Но я не понимаю. почему например библиотека на ruby не может содержать те же ошибки? В чем тут проблема php?
                                                                                                                                                                                                    0
                                                                                                                                                                                                    Может быть большая база готового кода? Или может быть то, что легче найти хостинг