Пишем свой Framework

    PHP Frameworks
    Для начинающих «велосипедистов» иль просто любопытствующих…



    Данная статья не призыв к действию, а лишь небольшая зарисовка на тему «Как бы я это сделал». На данный момент у меня в отделе активно используется Zend Framework, и именно с ним я лучше всего знаком, поэтому не пугайтесь параллелей, это не реклама, ведь большинство фреймворков в равной степени сочетают в себе плюсы и минусы, а нам нужны лишь преимущества…

    Правила


    Начал бы с регламентирования правил:
    • Стандарты кодирования — лучше воспользоваться существующими, советую стандарты Zend Framework'а
    • Процесс добавления кода в репозиторий (даже если вы сами в проекте — это будет хорошо дисциплинировать), только не перегибайте палку, иначе это замедлит развитие проекта

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

    Архитектура


    Надеюсь большинство читателей уже знакома с патерном MVC (Model-View-Controller) — так давайте на нем и базировать наш фреймворк, использования чего-то иного, боюсь, будет отпугивать пользователей (тут я подразумеваю программистов :) ).

    Model


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

    Давайте представим как может выглядеть модель:

    // модель User использует в качестве хранилища БД
    class Model_User extends Framework_Model_Database
    {
        $_table = "users";
        $_pkey = "id";
     
        function getByLogin($login) { /*...*/ }
        function getByEmail($email) { /*...*/ }
    }
     
    // модель MainConfig использует в качестве хранилища ini файл
    class Model_MainConfig extends Framework_Model_Ini
    {
        protected $_file = "application.ini";
     
        function setOption($key) { /*...*/ }
        function getOption($key) { /*...*/ }
    }
     
    // модель Registry использует в качестве хранилища память - некая альтернатива глобальным переменным
    class Model_Registry extends Framework_Model_Memory
    {
        function setOption($key) { /*...*/ }
        function getOption($key) { /*...*/ }
    }
     
    // модель Session использует в качестве хранилища файлы сессии
    class Model_Session extends Framework_Model_Session
    {
        protected $_namespace = "global";
     
        function setOption($key) { /*...*/ }
        function getOption($key) { /*...*/ }
    }


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


    View


    Каковы нынче требования к шаблонизатору? Лично для меня нативный PHP синтаксис, поддержка различного рода хелперов и фильтров. Так же должен быть реализован паттерн «двухэтапного представления» (Two Step View pattern), в ZF для этого служат два компонента — Zend_View и Zend_Layout.

    Приведу пример такого представления:
    <?php if ($this->books): ?>
        <!-- Таблица из нескольких книг. -->
        <table>
            <tr>
                <th>Author</th>
                <th>Title</th>
            </tr>
            <?php foreach ($this->books as $key => $val): ?>
            <tr>
                <td><?php echo $this->escape($val['author']) ?></td>
                <td><?php echo $this->escape($val['title']) ?></td>
            </tr>
            <?php endforeach; ?>
        </table>
    <?php else: ?>
        <p>Нет книг для отображения.</p>
    <?php endif; ?>

    Пример использование layout'ов (взят из документации по Zend_Layout):

    Layout Example

    О да, в Zend Framework'е удачная реализация представления, она мне нравится, конечно, не без мелких нареканий, но в целом — это пять.


    Controller


    Контроллер должен выполнять свои обязанности — обрабатывать запрос, пинать модель и представление — дабы пользователь получил желаемый результат.

    Давайте попробуем среагировать на запрос пользователя следующего вида: example.com/?controller=users&action=profile&id=16

    Так, проведем разбор — у нас просят показать профайл пользователя с id=16. Соответственно напрашивается существование контроллера users с методом profile, который бы смог получить в качестве параметра некий id:
    // название контроллера должно содержать префикс - дабы чего не напутать
    class Controller_Users extends Framework_Controller_Action
    {
        public function actionProfile()
        {
            // получаем данные из запроса
            $id = $this->request->get('id');
     
            // пинаем модель
            $user = new Model_User();
            $user -> getById($id);
     
            // закидываем данные в представление
            $this->view->user = $user;
        }
    }


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

    Кто повнимательней увидит в данном примере появление некого Request'a — это объект который занимается разбором входящего запроса. Зачем он нужен — об этом чуть далее.


    Routers


    Теперь немного о требованиях со стороны конечных пользователей — в частности о ЧПУ. Сравните следующие варианты ссылок:

    example.com/?controller=users&action=profile&id=16
    example.com/users/profile/id/16 // стандартная схема построения URL'a в ZF
    example.com/users/profile/16 // CodeIgniter
    example.com/profile/16 // возможное пожелание заказчика, и его нужно выполнять


    Для генерации/разбора подобного входящего запроса в ZF используются роутеры — по факту — это правила построения URL'ов, нам так же придется их реализовать — и с этим сложно поспорить.

    Мне больше по душе передача именнованых параметров — такой URL легче читаем, сравните:
    example.com/users/list/page/2/limit/20/filter/active
    и
    example.com/users/list/2/20/active


    Вы наверное захотите сразу засунуть данный функционал непосредственно в класс Request, но не спешите, ведь нам еще потребуется генерировать правильные URL во View — а вызывать там объект Request — немного не логично, давайте таки оставим это на совести отдельного класса, к которому может обращаться как Request так и View


    Request & Response


    С назначением класса Request думаю проблем не возникает — в его функции входит не так много:
    • обработка входящих параметров всеми правилами из Router'а
    • отдавать параметры в контроллер по требованию

    Но есть еще Response — о нем я как то не упоминал ранее, что же он должен делать:
    • формировать заголовок ответа
    • формировать ответ — т.е. брать view, оборачивать в некий layout и на выход

    Мне не очень нравится реализация Response в ZF — слишком много лишнего в нем


    Modules


    Фреймворк должен быть модульным, т.е. написав какой-то модуль (блог, форум, и т.д.) вы сможете с легкостью использовать данный код в других приложениях. Для этого нам понадобится лишь отделить MVC каждого модуля в свою директорию, при этом какой-то модуль останется за главного.

    Core


    Теперь стоит перейти к самому вкусному — непосредственно к ядру системы, его функционал мы практически уже описали, стоит лишь подвести черту:

    1. При инициализации входящий запрос должен быть обработан всеми правилами Router'ов, дабы объект Request мог вернуть нам запрашиваемое значение по ключу
    2. Объект Request так же должен знать, какой модуль/контроллер/экшен запрашивается
    3. Ядро должно подгрузить необходимый контроллер и вызвать запрашиваемый экшен (метод контроллера)
    4. После отработки контроллера вызывается Response и ставит точку

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

    Вспомогательный классы


    Если вы захотите потренироваться в написании «велосипедов», то можете начать отсюда:

    • Работа с БД — необходима поддержка MySQL, SQLite, PostgreSQL (это минимум), а в целом стоит уделить этому пункту много внимания, т.к. он один может привлечь множество пользователей
    • Валидаторы — необходимая вещь, для экономии времени при написании форм (см. Zend_Validate)
    • Транслятор — для реализации мультиязычности в системе, возможно хватит и gettext'a, но не стоит на это надеяться
    • Почта — можно обойтись лишь функцией mail, но это как-то не по-взрослому
    • Пагинатор — для решения тривиальной задачи — разбиение по страницам (см. Zend_Paginator)
    • Навигатор — построение меню, карты сайта и «хлебных крошек» (см. Zend_Navigation)
    • Кэширование — без него никуда (см. Zend_Cache)
    • Конфигурационные файлы — Zend_Config слишком большой для того, чтобы обрабатывать лишь один ini файл, тут можете попрактиковаться, но все же посматривайте на Zend_Config_Ini
    • Автозагрузчик — очень полезная вещь, и главное удобное — Zend_Loader
    • ACL — возможно потребуется — по крайней мере, распределение прав по запросу модуль/контроллер/экшен лучше пусть будет зашит в системе

    Я не случайно привожу ссылки на пакеты Zend Framewrok'а — они вполне адекватны и самостоятельны, могут быть использованы сами по себе, т.е. никто ведь не машает вам построить свой фреймворк из кубиков Zend'a (и вот тому пример: ZYM)


    Тривиальные задачи


    В фреймворке должен быть заложен функционал для решения следующих тривиальных задач (мелких и не очень):

    • Redirect — самый обычный, вызывается из контроллера
    • Forward — это пересылка с одного модуль/контроллер/экшен на другой без перезагрузки страницы
    • Messages — различные сообщения, с возможностью получения их после перезагрузки страницы
    • Scaffold — быстрый способ построения приложения для редактирования записей в базе данных (утрированно)


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

    Возможно чего забыл из «тривиального» — пишите...


    Структура каталога


    И так, что у нас получается, если взглянуть на файловую систему (в document_root должна лежать лишь папка public):
    project
    |-- application
    |    |-- configs
    |    |-- layouts
    |    |-- controllers
    |    |-- models
    |    |-- views
    |    `-- modules
    |         `-- <module_name>
    |              |-- layouts
    |              |-- controllers
    |              |-- models
    |              `-- views
    |-- data
    |    |-- cache
    |    |-- logs
    |    `-- sessions
    |-- library
    |    `-- Framework
    |-- public
    |    |-- styles
    |    |-- scripts
    |    |-- images
    |    |-- uploads
    |    |-- .htaccess
    |    `-- index.php
    `-- tests
    


    Это лишь мое пожелание, какой же она будет у вас — решать вам…

    Вывод


    To Be Or Not To Be — решать вам, как по мне — можно смириться с недостатками какого-то одного фреймворка, и наслаждаться его преимуществами. Возможно, вы попытаетесь написать свое решение или скрестить существующие, но не забываете — написание такого рода приложения влечет за собой ответственность по его поддержке.

    RSS моего блога доступен по адресу http://anton.shevchuk.name/feed/, а твиттер тут http://twitter.com/AntonShevchuk

    Similar posts

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

    More

    Comments 202

      +34
      что-то лично мне «Ваш» фреймворк в теме напоминает зендовский… или это только мне напоминает? да и «писать фреймворк» действительно нормальный могут специалисты выше среднего, иначе это получится не фреймворк, а лажа, уж простите. А специалистам выше среднего эта статья не нужна абсолютно.
        +2
        Я с вами согласен, только вот «специалисты выше среднего» — это не каждый второй, хотя наверное каждый второй считает себя таковым, вот для них и была написана данная статья…
          +1
          ага, тока это не фреймворк, а обычная МВЦ, причем явно тыриная с зенда
        +7
        Можно вопрос? Зачем писать свой фрэймворк? В данный момент выбор их и так достаточно богат.
          +1
          Достаточно много существует самописных фреймворков, наверное каждый 2-ой ведущий разработчик в свой время разрабатывал или участвовал в разработке оного…
            +5
            Вы-таки не ответили на вопрос.
              +8
              Я думаю ответ был в контексте. Самописные фреймворки существую и равно также пишутся новые. Автор статьи поделился своим опытом и видением этой темы. Где-то мы будем согласны, где-то привыкли не так или не согласны вовсе. Люди делятся знаниями и мнениями и это прекрасно. Пусть живет Хабр.
                +2
                если звезды зажигаются, значит это кому-то нужно(с)
                А вообще-то, предположим, MVC — не истина в последней инстанции и через 10 лет её что-то заменит. То по теории «всем сидеть на ZF и не искать альтернатив» мы никогда мы никогда не придем «к замене».
                0
                Это было раньше. У меня тоже есть свой фрэймворк, написанный в 2003 году, но я его уже два года как не использую — перешел на CI.

                Я же говорю про СЕЙЧАС. Выбор большой, по большому счету все фрэймворки представляют собой одно и то же, с разными особенностями.
                  +1
                  И я говорю про сейчас, именно сейчас разрабатываются сотни фреймворков, и то что существуют гиганты среди них нисколько не уменьшает рвения написать свой…
                    +1
                    Вопрос был «ЗАЧЕМ?» :)
                      –2
                      Наверное, это риторический вопрос, ну или по крайней мере не ко мне :)
                        +3
                        Да нет, риторический вопрос — это тот, на который не ждут ответа, у вас же целенаправленно в пятый раз спрашивают.
                          +1
                          Я могу ответить почему я в 2005 начал писать свой фреймворк — не из чего было выбирать — полноценные фреймворки только зарождались, потом появился ZF — вначале очень сырой — на его базе создавали свой, в дальнейшем в своих наработках надобность отпала, т.к. ZF пошел вперед на всех парах…

                          Но на данный момент я не разрабатываю фреймворк, поэтому я не могу достоверно ответить зачем это делают другие, спросите лучше их с какой целью они это делают — возможно кого не устраивают все известные системы, а возможно кому просто интересно, у каждого своё…
                            0
                            Это вопрос не к автору, он же говорит. Спросите это у тех, кто начинает свою карьеру с собственного фреймворка.
                          –1
                          1. Уверенность в каждой строчке кода (Ну это наверное для тек кто выше тех кто выше среднего)
                          2. Для любителей писать, — «Оо в этом фреймворке автор употребил unset вместо session_unset»

                          Ну думаю можно найти варианты еще, это так на первый взгляд.
                            0
                            По первому не увереность, а самоувереность
                              0
                              Простите, ошибся.
                              УверенНость
                              СамоуверенНость
                              +2
                              > Уверенность в каждой строчке кода
                              Часто встречал напыщенных особей с ЧСВ, которые считали, что их код лучше кода, прошедшего через руки сотен разработчиков.

                              Если чеовек не может разобраться в чужом фреймворке(раз он не уверен в его коде) — то свою систему точно качественно не реализует.
                                0
                                а банальное — наличие свежих идей, до которых ещё никто не додумался?
                        +6
                        одно время работал в одной студии.
                        писать можно было на любом фреймворке, но у них существовал и свой.
                        когда я с ним ознакомился — понял, что он один из лучших, что мне приходилось встречать, исходя из совокупности плюсов — скорости разработки, ресурсопотребления, легковестности, гибкости и т.д.

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

                          Это как жить в типовом доме или в построенном лично для Вас, по вашему проекту именно так, как Вам нужно до последней мелочи.
                            0
                            главное — не упускать из виду тот факт, что построить типовой дом можно намного быстрее и дешевле :)
                            0
                            Писать свой фреймворк не нужно. Лучше использовать готовый.

                            Правда, бывает, возникает необходимость. Что-то кастомное и быстро написать; нет времени изучать и выбирать, но есть время писать; просто есть куча старого кода который как-то упорядочен, и его можно порефакторить и назвать громко.

                            А если ответить на вопрос «зачем» — так это только затем, чтобы понять, какой фреймворк тебе нужен. Самоисследование, саморазведка боем, так сказать.
                              0
                              Чтобы понять, как и почему устроены существующие.
                              –5
                              знаете, я конечно уважаю Ваш выбор, но я пару раз перечитал этот топик.
                              не понял лишь одного: Для чего вам еще один Фреймворк?
                              ведь существующие с головой выполняю свою задачу.
                              работал только с 2. о них и напишу:
                              CakePhp — все что там подгружается, нужно по-любому, а все остальное — стройте на здоровье.
                              Zend — что нужно подключаете, что не нужно, просто почитайте, интересно будет. Благо там стооолько всего.
                                +1
                                Мне он не нужен, я уже разрабатывал фреймворк и на базе PEAR (ZF еще и в проекте не было), и на базе ZF (еще даже не стейбл версии) — я получил очень хороший опыт в этом плане, и если бы прочитал подобную статью раньше — то возможно бы обошел достаточное количество граблей…
                                +2
                                Прошу прощения, но не нашел ни в заголовке, ни в статье (только догадался) — у вас фреймворк для чего? Есть ощущение, что для вас фреймворк — это синоним какого-то конкретного слова, а какого — непонятно. Можете пояснить?

                                P.S. Особенно понравилось соотношение объемов «правила» — «архитектура» — «код». Вы добавьте, пожалуйста — «архитектура должна быть хорошей», чтобы всем сразу стало ясно, что вы тут не глупостей понаписали.
                                  +7
                                  я нашел различие вашего фреймворка и от зенда ))

                                  > public function actionProfile()
                                  в зенде обычно
                                  > public function profileAction()

                                  а вообще правильно, перед тем как братся за свой, пусть посмотрят, что уже сделано и еще раз подумают
                                    0
                                    Собственно это я и хотел донести до читателя…
                                      0
                                      Это можно было выразить гораздо короче. Разве нет?
                                  • UFO just landed and posted this here
                                      –2
                                      Я бы сказал даже — если вы не напишите документацию сейчас, то потом вы её не напишите уж точно…
                                        0
                                        а я в последнее время — начинаю кодить с дизайна:
                                        сначала описываю как мне с этим будет удобно и быстро работать.
                                        потом базовая реализация — тут сразу понимаешь где ошибся при проектировании и т.д. пока пишешь все и так в голове -доки не нужны.
                                        и если устроит то что получилось — тогда вылизываю до конца + документирование…

                                        но это дело вкуса. ктото тратит часы на доскональное описывание всех методов — хотя они еще пустые )
                                      +4
                                      как я понял, статья носит больше теоретический характер. Когда участвуешь в создании такого рода систем, набираешься опытом, а так же получаешь хорошие познании в абстрагировании объектов.
                                        +1
                                        Какова цель вашей статьи? Рассказать про MVC? Тогда вы это сделали не в той форме. Рассказать про то, как написать свой fw? Тогда вы не описали и 1%! Поделиться опытом? Вы тут этого не делаете. Так зачем нужна ваша статья? Кому она поможет?
                                          0
                                          Рассказать что разрабатывать «велосипеды» это не так уж и плохо, только уж ознакомитесь с существующими решениями, выделите необходимое и общее, первое реализуйте, второе поймите…
                                            +4
                                            Вот кстати замечательная вещь — несколько знакомых разработчиков, в том числе и я, как-то пытались написать свой велосипед. И перед этим решили посмотреть чтож там такое есть в этих различных фреймворках. При этом примерно половина из них остановилась на одном из существующих. Потому как писать все то, что уже написано и что тебе реально подходит — немного глупо.
                                              0
                                              Посмотреть чужие решения полезно. Проблема в том, что вы делаете крайне однобокий анализ. Ни плюсов, ни минусов. Ни пояснений почему именно MVC. Ни…

                                              Какую полезную информацию вынесет читать из вашей статьи? Как *примерно* сделан ZendFW? Тогда уж лучше было просто дать ссылки на документации нескольких фреймворков и пусть сравнивает.

                                              Человек, который начнет делать свой фреймворк столкнется с огромным кол-во проблем и мест где надо принимать важные архитектурные и не только решения. Ничего из того, что бы могло ему помочь, вы не написали.
                                                0
                                                Мне тоже эта публикация показалась профанацией, выполненной в ключе «Все дороги ведут в Зенд». А это ложь. Ну, а сумбурность изложения без чётко выделенных тезисов позволяет сделать вывод: автору сего действительно лучше использовать готовое решение.
                                              0
                                              > Какова цель вашей статьи? Рассказать про MVC? Тогда вы это сделали не в той форме. Рассказать про то, как написать свой fw? Тогда вы не описали и 1%! Поделиться опытом? Вы тут этого не делаете. Так зачем нужна ваша статья? Кому она поможет?

                                              Мне.
                                                +1
                                                а ты кто? о_0''
                                              +10
                                              Кто не писал свой фреймворк или cms — пусть бросит в меня камнем )

                                              а если серьезно — чужие фреймворки это всегда чужая идеология, чужие алгоритмы чужие костыли…
                                              Да — есть отлично спроектированные фреймворки с которыми приятно работать. НО меня, например, часто не покидает ощущение что там очень много лишнего грузится и происходит. Того что мне — именно в данном проекте не нужно совершенно. или оно излишне раздуто сущностями…

                                              в очередной раз поймав себя на такой мысли — я тоже заложил основу для своего web-каркаса. Ведь если подумать, то от фреймворка не так много надо.:
                                              1) облегчение создания базовой логики работы приложения (парсить реквест, роутить если надо, загрузка и отработка системных сущностей, отработка сущностей приложения)
                                              2) набор системных компонент, которые позволяют решать будничные задачи просто и быстро
                                              остальные ипостаси приложения пишутся всегда вручную — и учитывают особенности и структуру данной задачи

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

                                              как сказал Альберт Эйнштейн:
                                              «всё должно быть сделано настолько простым, насколько это возможно, но не проще»

                                              умный был дядька)
                                                0
                                                тогда вам фреймворк не нужен :) фреймворк как раз и и есть набор для решения разнообразных задач и чем он мощнее тем больше лишнего и ненужного, другой вопрос-как это реализовано и можно ли отключать.
                                                  0
                                                  Как я понял, сверхнавороченный — не нужен. Лёгкий, обозначающий только зависимости классов друг от друга, возможно, и пригодился бы.
                                                  +2
                                                  Куда вам бросить камень? :)
                                                    0
                                                    бросайте в иконку «Хороший комментарий» ))
                                                    +1
                                                    И я бы бросил парочку…
                                                    +3
                                                    Поздравляю, вы написали Zend Framework :) А точнее то что делает разработчик, взяв zf и подпилив его под свои требования.
                                                    • UFO just landed and posted this here
                                                        0
                                                        Повторенный в стомиллионный раз мануал по возможностям ZF. Вобще ничего нового. Какова цель этого материала? Прочитать все это можно на десятках ресурсов в инете.
                                                          0
                                                          Помоему все более менее разработчки подпиливают его,
                                                          но это есть надстройка, а не перестройка.
                                                          +2
                                                          Ожидал интересных мыслей о проектировании. Название поста не отображает его содержание. ИМХО.
                                                          • UFO just landed and posted this here
                                                              +7
                                                              Я всегда считал что достаточно съесть печень древних разработчиков…
                                                                0
                                                                в печени только — накопившийся опыт,
                                                                а гениальность друвних — в Моске :)
                                                                  0
                                                                  целеком надо есть, не ошибетесь
                                                                0
                                                                Где-то наткнулся на фразу (смысл):
                                                                «Когда я объясняю что-то, с каждым разом я сам это лучше понимаю»
                                                                • UFO just landed and posted this here
                                                                    0
                                                                    в интерпретации реалиста: умные учатся на своих ошибках, а дураки — не учатся.
                                                                    • UFO just landed and posted this here
                                                                +1
                                                                Забавная статья. Автор, сколько фреймворков вы уже написали?
                                                                  0
                                                                  Надеюсь большинство читателей уже знакома с патерном MVC (Model-View-Controller) — так давайте на нем и базировать наш фреймворк


                                                                  После этого даже не стал читать дальше. Скучно :(
                                                                    +2
                                                                    Сколько можно то ;-) Количество и качество фреймворков уже на солидном уровне. Любите велосипеды — пожалейте разработчиков, которым в дальнейшем может быть придется дорабатывать ваш код.

                                                                    Еще отличительная черта нормального фреймворка — актуальная документация. А у вас сейчас просто один из способов реализации MVC на практике.
                                                                      +4
                                                                      Здесь все спрашивают: зачем разрабатывать совой фреймворк? Но ответ довольно прост…

                                                                      Основных причин две:
                                                                      1. У программиста не хватает усидчивости разобраться с чужим фреймворком и он по обыкновению начинает все с нуля.
                                                                      2. Программист хочет добиться максимальной производительности.

                                                                      Второй случай — мой. Меня не устраивает избыточность фреймворков, работают они (кто бы что ни говорил) медленно. Поэтому я [b]для себя[/b] написал собственный фреймворк и успешно решаю на нем [b]свои[/b] задачи. Я понимаю, что другим он, наверное, не подойдет, но в итоге я имею быструю разработку и быстрый код. Мне большего и не нужно.

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

                                                                      Что я хотел сказать: свой фреймворк в принципе имеет смысл разрабатывать, но только в том случае, если ты чувствуешь в этом крайнюю необходимости и готов потратить на разработку и отладку значительное время.
                                                                        +1
                                                                        любой начинающий и амбициозный с творческим складом — программист проходит «велосипедные» стадии :)
                                                                        в итоге из него получается довольно опытный программист.
                                                                          0
                                                                          Мне пришлось писать свой фреймворк из за того что в той конторе в которой я работал отказались от сторонних разработок. И мои рассказы о том что изобретать велосипед не хорошо на них не повлияли никак
                                                                          +1
                                                                          >>… знакомы… MVC (Model-View-Controller) — так давайте на нем и базировать наш фреймворк, использования чего-то иного, боюсь, будет отпугивать пользователей (тут я подразумеваю программистов :)

                                                                          Забавная логика выбора… этого паттерна :))

                                                                          Адекватных программистов — чем-то новым не спугнуть.
                                                                          скорее на оборот — привлечь
                                                                            +1
                                                                            mzz.ru

                                                                            Неплохо покрыт юнит-тестами.
                                                                              0
                                                                              Так чем существующие-то не устраивают? Было бы здорово получить ответ в формате «Frameworkname»: плох тем, тем и этим.
                                                                                –6
                                                                                Вот почему пых-пых умрет, так это из-за разнообразия. В питоне что: Django, Pylons, TurboGears… Да ладно уж, что и говорить – Django only. :)

                                                                                С другой стороны идеальным является Pylons – набор готовых решений, слепленных воедино.

                                                                                А вы со своими Zend, Symfony и ещё стопяцоттысячмиллиардов фреймворками загнетесь, ей богу
                                                                                  0
                                                                                  Разница всего лишь в числе разработчиков.

                                                                                  Когда программировать на Python будет столько же как и на PHP там тоже будут сотни фреймворков (про качество мы помолчим :)
                                                                                    0
                                                                                    Боюсь огорчить, но PHP держит ведущие позиции только из-за уже работающих решений. Новое идет в большей степени на куда более надежных платформах.

                                                                                    Вспомним с чего начинался Google App Engine и на чем написана львиная часть их сервисов (подсказка – не пхп).

                                                                                    Программистов больше на питон. Вы учитывайте что питон не для хоумпейджа создавался, и не в конце 90х. Так что ;)
                                                                                      0
                                                                                      Гм, вы меня абсолютно не огорчили. Windows тоже держит ведущие позиции только из-за уже работающих решений :)

                                                                                      Но каким образом это отменяет тот факт, что на PHP пишет больше людей чем на Python?

                                                                                      При всей натянутости такой статистики
                                                                                      www.tiobe.com/index.php/content/paperinfo/tpci/index.html
                                                                                      предположить, что графоманство и интерес к уже работающим решения дает разницу в 2 с лишним раза — трудно.
                                                                                        –2
                                                                                        Сложно по нескольку раз писать одно и то же. Ниже я развернул точку зрения с циферками ещё чуть ниже.

                                                                                        Количество != качество
                                                                                          0
                                                                                          Парень, ты с логикой дружишь?

                                                                                          В комментарии выше ты пишешь «Программистов больше на питон»
                                                                                          Теперь когда тебя приперли фактом, ты пишешь «Количество != качество»

                                                                                          Ты же пытался доказать что «больше» :) а не «качественнее» :)
                                                                                    +3
                                                                                    это все равно что сказать «Linux умрет из-за разнообразия»
                                                                                    или — уже должен был умереть давно! но что это? с ним… :)
                                                                                    про природу думаю и писать не стоит — она вся такая разнообразная бабочек столько видов, птиц… разнообразие!
                                                                                      –1
                                                                                      POSIX? Нету в линуксе разнообразия.

                                                                                      Природа намного мощней группы (пусть хоть несколько миллионов) программеров и она может поддерживать свои продукты.
                                                                                        0
                                                                                        Да? Точно мощней? Точно способна поддерживать?

                                                                                        То-то в Европе, Китае и Индии уже не осталось нормальных лесов… Куда-то делись бизоны Северной Америки и куча других животных по всему миру…
                                                                                        Про высохший Арал мы скромно умолчим…

                                                                                        Мне нравится ваша голословная уверенность.
                                                                                          –1
                                                                                          Мой коммент чуть ниже даст вам ответ. И ещё чуть ниже есть конкретные цифры.
                                                                                        0
                                                                                        Широка и необъятна природа нашей страны, одних только видов комаров сто пятьдесят тысяч. (с) не помню откуда.
                                                                                        –2
                                                                                        Интересная точка зрения, жаль что неадекватная, но я всё равно обожаю читать зловещие предсказания пользователей питона и руби насчёт пхп, спасибо :)

                                                                                        Кстати основные фреймворки на Php это Zf, Symfony, Ci, Yii, Kohana — остальное малоизвестные велосипеды в счёт брать глупо, так-что никаких вам стопяцоттысячмиллиардов.

                                                                                          0
                                                                                          Вы наверное не совсем понимаете что такое фреймворк, раз решили спорить со мной (9 лет веб-дева, 6 из которых PHP; публикации в phpinside присутствуют и тд и тп).

                                                                                          Фреймворк – это набор библиотек, в первую очередь. Когда у вас даже 5 (из вашего же списка, хотя я их видел гораздо больше) наборов таких библиотек, у вас уже идет:

                                                                                          1. Раздробление комюнити
                                                                                          2. Дублирование кода

                                                                                          Можете сказать что вас больше, но:

                                                                                          1. Python используется для написание не только хоумпагов, но и для прикладных программ. Если взять всех разработчиков, то нас будет больше.
                                                                                          2. Мы едины за счет большого количества пакетов, используемых ещё до веб-эры.
                                                                                          3. 90% php программеров пишут и поддерживают сайты своих школ. Извините, но эти люди не способны поддерживать фреймворк… А их аж 5 (типа 5).

                                                                                          Итого: более качественное комюнити. «Лучше быть одиноким волком, чем вожаком стада баранов»

                                                                                          Ей Б., мои слова подтверждает этот топик. Он сравни «Как собрать БАК у себя на кухне».

                                                                                          _Я читал вводные слова автора, но не удивлюсь что с этим топиком вы увидите ещё пару новых «фреймворков», отличающихся от того же зенда авторами и именованием компонентов.

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

                                                                                          И ещё, попробуйте найти статью «Как написать свой веб-фреймворк на питоне». В лучшем случае вы найдете инструкцию по сборке Beaker и пр. частей. Блять, вот нахер 1000 раз писать заново диспатчер запроса тот же? Что-то меняется в стандарте? Может лучше поддерживать все бражкой ОДНУ, но максимально эффективную реализацию. Но это уже речь о «python way» и что-то я разошелся ;-)
                                                                                            –1
                                                                                            «Вы наверное не совсем понимаете что такое %любое слово%, раз решили спорить со мной»
                                                                                            В мемориз! Буду использовать при каждом удобном случае!

                                                                                            Я не берусь отвечать на ваше професси ональное мнение, ибо в нём столько противоречий, выдуманных фактов и цифр с потолка, что мне совесть не позволяет тратить время на это :)

                                                                                              –1
                                                                                              Понимаю, «многа букаф»
                                                                                                –3
                                                                                                Да-да, много букаф и ноль смысла. Вы всё верно поняли :)
                                                                                                  –2
                                                                                                  «Харе пердеть в холостую – давай гони дерьмо» (с) Ноггано — 2x2

                                                                                                  Где ваши аргументы, мил человек? Раз сказать нечего – не создавайте о себе ещё худшее впечатление.
                                                                                                    –2
                                                                                                    Я вам не аргумент, я вам целое заключение написал, как-говорится — подвёл итого: «в нём столько противоречий, выдуманных фактов и цифр с потолка». Вам не понятно? Мне вас жаль. И да, отличная цитата.

                                                                                                    «Гениальной выход для школьника с завышеной самооценкой.»
                                                                                                    «Раз сказать нечего – не создавайте о себе ещё худшее впечатление. „

                                                                                                    Откуда столько наездов, вы больны?
                                                                                                      0
                                                                                                      Я уже слишком много времени пытаюсь услышать конкретные возражения на конкретно мной написаный текст. Или это вам сложно понять?
                                                                                                      –1
                                                                                                      И да весьма любопытна ссылочка habrahabr.ru/blogs/django/68144/ юзера SamDark, это же надо умудрится самого себя словить на лжи, молодец :)
                                                                                                        –2
                                                                                                        Скажем так – далеко не я свалил топ в холивар ;-)

                                                                                                        Ваши детские сливалки кармы грозят мне невозможностью делиться умными мыслями в своем блоге :) Принимаю меры ;-)
                                                                                                          –1
                                                                                                          Да вы не оправдывайтесь, и так всё понятно :)
                                                                                                          В общем, Epic fail, лавку можно прикрывать. Топик rest in peace.
                                                                                                            –1
                                                                                                            Ой вы правы, я ошибся начав вас угонять и мои нелепые доводы ПО ТЕМЕ не сравняться с вашим великолепным дерьмецом.

                                                                                                            Типа это услышать хотел?))))
                                                                                                            0
                                                                                                            > Принимаю меры ;-)

                                                                                                            За такие топики, Вас реально надо пинком отсюда гнать.
                                                                                                              –3
                                                                                                              Сравните ваш «послужной список» и мой. Думаю, я внес больший вклад в Хабр. ;) Так что не вам решать
                                                                                                    0
                                                                                                    Кстати, циферки, ваши любимые по ходу: http://habrahabr.ru/blogs/django/66888/

                                                                                                    (понимаю, вам лень):
                                                                                                    Некоторым из вас, возможно, будет интересно узнать, что более 900 уникальных участников было задествовано в разработке Django, начиная с 1 января 2007 года.

                                                                                                    У самого питона в два раза меньше.
                                                                                                    0
                                                                                                    ru.wikipedia.org/wiki/%D0%A4%D1%80%D0%B5%D0%B9%D0%BC%D0%B2%D0%BE%D1%80%D0%BA
                                                                                                      –1
                                                                                                      Не спорьте с ним! У него же 9 лет веб-дева, 6 из которых PHP; публикации в phpinside присутствуют и тд и тп! Как вы смеете?
                                                                                                        0
                                                                                                        Скатились к «сам дурак»? Гениальной выход для школьника с завышеной самооценкой. Но вижу, вы даже старше меня… Нестыковочка
                                                                                                        0
                                                                                                        > Обычно объединение происходит за счёт использования единого API.

                                                                                                        Именно об этом я и говорю. В частности, WSGI был создан для стандартизации API (в пхп, например, такого нет; советую прочесть соответствующий PEP).

                                                                                                        По сути каждый пхп фреймворк вводит свой API. Соответственно повторное использование кода из разных фреймворков невозможно.
                                                                                                          +1
                                                                                                          за 6 лет пых съел твой моск XD там специально для тебя написано, чем фреймворк отличается от библиотеки…
                                                                                                            0
                                                                                                            Ещё раз прочитайте цитату которую я из вашей же ссылки вытянул и то как она согласуется с моими доводами.

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

                                                                                                            * Начинает складываться ещё более прискорбное мнение о коммуникационных возможностях пхп-фанов
                                                                                                              0
                                                                                                              да у меня уже давно о вас такое мнение :-P
                                                                                                                –1
                                                                                                                Может всетаки цитаты или возражения по делу?
                                                                                                                  +1
                                                                                                                  Слушайте, я чё-т не понял, Вы что о себе возомнили тут? ;) Вы (конкретно вот Вы, Ваша суть) — никакого отношения к Питону не имеете. Вы — его посредственный пользователь, знаете его, вероятно, поверхностно, креативного участия ни при создании Django, ни при создании Питона не принимали. О чём Вы тут рассуждаете? При чём здесь PHP и Вы? При чём здесь Django и Вы? Исходя из Вашего топика Вы — трусливый дилетант, вряд ли достойный называться программистом ;) Выход — там.
                                                                                                                    –3
                                                                                                                    Ну-ну :) Гляньте админа блога Django) Это о моем отношении к Django. Найдите людей которые учавствуют в разработке PHP и сидят в этом говнотопе и получите шакаладную медаль :)

                                                                                                                    Если Вы мейнстример – это далеко не означает что все кто не свами дебилы. Подумайте на досуге.
                                                                                                                      0
                                                                                                                      Пишут PHP и Zend Framework очень ограниченное количество человек. Если же говорить о самом ZF — то мне очень нравится как у них организована система принятия кода в фреймворк, собственно я тоже участвую в данном комьюнити, правда в роли разработчика пакета еще не приходилось, баг репорты, обсуждения пропоузолов и тд…
                                                                                                                    0
                                                                                                                    мне процитировать статью википедии _целиком_? о_0''
                                                                                                                      0
                                                                                                                      Нет, достаточно предложение, которое опровергает мою точку зрения.
                                                                                                                        0
                                                                                                                        если ты не увидел его там — не увидишь и тут…
                                                                                                                          –1
                                                                                                                          «Сам дурак» (с) Вы
                                                                                                                            +1
                                                                                                                            маразм…
                                                                                                          0
                                                                                                          Для альтернатиноодаренных сторонников python-way поясняю. PHP это такая хрень для работы сайтов и интернет приложений.

                                                                                                          При этом число поисковых запросов о PHP вдвое больше чем о Python. Даже если предположить что PHPсты все поголовно дауны и им требуется в два/три/четыре(нужное подставить) раза чаще лазить в интернет, то ты сам сказал что на Python пишут и что-то там прикладное. Надо ли говорить, что разработка для веб и для геймдева это разные вещи? И что Django или ZF для второго тупо не подходят. Или ты этого не понимаешь?

                                                                                                          Практически все PHPшники сосредоточены в одной узкой области, и на каждого пишущего на Django приходится 10/20/30 пишуших на каком-нибудь PHP-фреймворке. Именно поэтому PHP пока может себе позволить такое разнообразие. Хотя и тут претендующими на индустриальный стандарт могут считаться от силы 5-10 фреймворков (но никак не сотни существующих)

                                                                                                          С чего вдруг ты решил, что программиста необходимо определять по способности поддерживать ту или иную разработку, а не по тому что он вообще программирует? :) А если я в твой критерий добавлю еще какой-то ерунды? Например умение правильно писать SQL запросы? я тебе руку даю на отсечение, ты в список программистов не попадешь :)

                                                                                                          Хочешь сказать что попадешь?

                                                                                                          Ну держи — sql-ex.ru/
                                                                                                          протестируешься, потом нам тут расскажешь.

                                                                                                          Так что парень, не гони волну :) в лучшем случае наглотаешься, в худшем захлебнешся :)
                                                                                                            –2
                                                                                                            «Поисковые запросы» это зачот :-D Приведу контр-аргумент: нах мне миллион решений, когда есть одно?

                                                                                                            30/1. Окей! Сколько из этих 30 делают коммиты и улучшают фреймворк? (пусть даже разные библиотеки)

                                                                                                            Как Вы ещё не можете догнать, что есть разница между питонистами и пхпшниками :) Это как линуксоиды и виндузятники. Последних — попой жуй, а толку? :)
                                                                                                              +1
                                                                                                              Не-не, не виляйте своей попой.

                                                                                                              Я вам дал конкретный тест. Вы пройдите и о результатах сообщите. Я хочу посмотреть во что вылились ваши 9ть лет вебдева с детского сада :)

                                                                                                              Я так понимаю «слабо». Тогда молчите и не выступайте.
                                                                                                                0
                                                                                                                1) Я пользуюсь ORM
                                                                                                                2) Я использую самописный драйвер для SimpleDB
                                                                                                                3) Все БД имеют отличный синтаксис

                                                                                                                И причем тут БД? :) Давайте тест по джанге или питону и пройдем вместе – вот весело будет
                                                                                                                  0
                                                                                                                  БД при том, что вы в качестве критерия программиста привели способность поддерживать фремворк.
                                                                                                                  А это бред :)

                                                                                                                  Так и запишем SQL не знает (лопух).

                                                                                                                  И не надо спрыгивать про «отличный» синтаксис. Стандарт SQL-92 никто не отменял :)
                                                                                                                  Я с MS SQL не работал вовсе :) Тем не менее первую часть теста прошел за несколько дней.

                                                                                                                  Да, вот еще такой вопрос, сколько у вас коммитов в Django? Ноль?! Какая досада :)
                                                                                                                  В общем никакой вы программист, так что не надо мне заливать про ОРМ.

                                                                                                                  Впрочем, у вас есть шанс :) 9ть лет вебдева говорите? :)
                                                                                                                  www.netsuite.com/portal/products/netsuite/main.shtml
                                                                                                                  3 месяца времени на нос вам и мне. И пишем аналог описанной тут системы :) В одиночку.

                                                                                                                  Хотя, вы опять как мальчик спрыгните, 3 месяца вам жалко будет :)
                                                                                                                  Ок, упрощенную версию за 4ре дня. Вы на Python, я на PHP. Готовы? Или опять, как сопляк, в кусты? :)

                                                                                                                  И, да, у меня нет 9ти лет вебдева :) хотя если посчитать, когда я написал свою первую программу на TurboBasic в проектной конторе, то, пожалуй, могу смело кричать о 20ти годах промышленной разработки :) (я же в проектной конторе писал :)
                                                                                                                    0
                                                                                                                    Четкие требования к «упрощенной» версии и я готов начать. Походит на писькамеренье, но именно этим мы уже второй день занимаемся, причем без выхлопа.
                                                                                                                      0
                                                                                                                      Ну как бы я вам дал ссылку :) Там даже демо есть :)
                                                                                                                      За 4ре дня (и даже 3 месяца) все что там имеется конечно не реализовать :) Поэтому, что успеете.

                                                                                                                      Но раз вы не разбиратесь о чем речь, то вкратце.

                                                                                                                      Обычная аккаунтинг система — без изысков ERP, CRM и прочего :)

                                                                                                                      Ведение счетов (создание, удаление, редактирование)
                                                                                                                      Транзакции (приход, расход, переучет)
                                                                                                                      Работа с потребителями и поставщиками.
                                                                                                                      По паре отчетов на все три категории. (разные форматы разными отчетами не считаются )
                                                                                                                      Естественно что мультипользовательская с разными ролями :)

                                                                                                                      Если нужно более детальное ТЗ, то завтра к утру.
                                                                                                                        0
                                                                                                                        окей.

                                                                                                                        * почему-то мне кажется, что у вас есть уже заготовка :) Предлагаю найти независимого человека, который бы дал уникальное задание. Если нет — я и на эти условия согласен, но сказанное учту :)
                                                                                                                          0
                                                                                                                          Парень, я вебдевом вообще не занимался :) На PHP, хорошо если имею 1.5-2 года опыта :) Да и вообще, я не профессиональный программист (только собираюсь попробовать фриланс).
                                                                                                                          А ты уже боишься :)

                                                                                                                          Все гораздо проще :) Возраст — это все же и опыт :) А опыт, как говориться не тетка :) Опыт дядька.

                                                                                                                          Мне такой проект скоро делать :) Поэтому то, что для тебя будет «бесполезным писькомерством», для меня будет профитом :)

                                                                                                                          Но можешь искать и независимого человека с уникальным заданием. Мне плевать в общем-то :) я знаю что справлюсь :)
                                                                                                                            0
                                                                                                                            Вот идея ниже. На твой «профит» мне не в кон работать.
                                                                                                                              0
                                                                                                                              Уже спрыгиваете? :)

                                                                                                                              Юноша, на свой «профит» я буду работать сам :) Вы же будете подтверждать свой 9тилетний стаж :)
                                                                                                                              Ваш код мне и даром не нужен, тем более я подозреваю его качество.

                                                                                                                              Вы бы хоть «идею ниже» раскрыли :) агрегатор сторонних сервисов для «хомяка» это не идея :) А читать все комменты мне лень :)
                                                                                                                          –2
                                                                                                                          Хотя стоп! Тут есть гениальная весчь с хоумпагами… Топ называется "хомяки вымирают". Предлагаю реализовать то что написано в коментах.

                                                                                                                          Как минимум это будет полезно не только для нашего с вами эго.
                                                                                                                            0
                                                                                                                            Чем закончилась перепалка? ;)
                                                                                                                              0
                                                                                                                              Закончилось затягиванием времени :)

                                                                                                                              Человек боится что у меня есть наработки :) А мне откровенно лень дель абы что, лишь бы чем-то померятся :) Так что, еще обсуждается в привате :)
                                                                                                                0
                                                                                                                > (9 лет веб-дева, 6 из которых PHP; публикации в phpinside присутствуют и тд и тп).

                                                                                                                дешёвые понты Вам идут, кстати. x)

                                                                                                                > 2. Мы едины

                                                                                                                ну какой дешёвый трёп, а? ;) Какое ещё «мы едины»? Я говорю — Вы — вообще никакого отношения, кроме рядового поверхностного юзера, к Питону не имеете.

                                                                                                                Понимаете, когда человеку сложно реализоваться за счёт своих возможностей, он пытается реализоваться за счёт унижения возможностей других. Ну хотите Вы рассказать о Питоне, Джанго — рассказывайте о них, пользы будет намного больше, благодарны Вам будут. Я не уверен, правда, что у Вас получится, поскольку Вы слишком поверхностны в данный момент. Поэтому Вы пытаетесь, поддакивая всем, кто Вам там что-то навнушал, и не имея своего мнения, унизить что-то другое — ПХП в данном случае, скатываясь до подобных топиков. Я повторю, выход — там.
                                                                                                                  –3
                                                                                                                  У вас склероз? Зачем мне тыкать по сто раз одной ссылкой аки одним аргументом? Придумайте что-нибудь новое – это всегда интересно :)

                                                                                                                  Товарищ, думайте башкой, я ПХП не унижаю. Я тут пытаюсь сообщить о том, что вы ЗАЕБАЛИ СО СВОИМИ ФРЕЙМВОРКАМИ.

                                                                                                                  Тут ещё найдется с десяток таких АДЕКВАТНЫХ, но в силу того что я сравнил ситуацию с Python, ВЫ подняли холивар.

                                                                                                                  Мне честно похуй на ваше мнение, пока она не скатывается до оскорбление меня лично. И ей богу, меня ещё в меньшей степени ебет ваш статус и возраст – за оскарбления ебало-то поломаю при встрече.
                                                                                                                    0
                                                                                                                    Парень, ты тупой :)
                                                                                                                    Ты даже банальный тест не можешь пройти.

                                                                                                                    Тебя никто не унижает, но человек 5ть пытаются сообщить, что ты тупой :)

                                                                                                                    В силу того что тебе пытаются это объясить ты скатываешься на маты и личное оскорбление.
                                                                                                                    А насчет личной встречи — адрес дать? :) Только сразу предупреждаю, я не Кличко, но в его весовой категории :)
                                                                                                                      –1
                                                                                                                      Да нет, это просто юношеский максимализм, это проходящее, не распинайтесь, и не обращайте внимания, малоэффективно всё равно, не оценит (способностей и знаний пока нет, не развиты ещё). Максимализм же, он, (самый противный — это подкреплённый дилетантизмом; можно наблюдать в данном случае) мало что вообще в округе видит. Так что, — просто укажите на дверь (ну, если хочется, пинком можете ;)).
                                                                                                                        0
                                                                                                                        Да, ради бога. Я сам через подобное проходил, правда в чуть менее острой форме :)

                                                                                                                        Просто, у меня есть настроение поплеваться :) Зачем отказывать себе в удовольствии?
                                                                                                                        Надоест — перестану.
                                                                                                                          –1
                                                                                                                          Кстати, да, вообще ушли от темы разговора. Я начал о разнообразии и необходимости стандартизации.

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

                                                                                                                          Ещё раз: Вы ЛИЧНО считаете стандартизацию злом?

                                                                                                                          Взгляните на явистов. У них вот все чики-пуки и они в ус не дуют… Кстати, дружелюбный народ и гневных школьников там нету (ну ладно, раз вам нужна точность – единицы)
                                                                                                                            0
                                                                                                                            Мда.
                                                                                                                            Вы начали с
                                                                                                                            >>«пых-пых умрет, так это из-за разнообразия»
                                                                                                                            О стандартизации здесь ну очень натянутый намек.

                                                                                                                            — Девушка, пойдем займемся сексом.
                                                                                                                            — Нет, я секса не хочу, я хочу любви?
                                                                                                                            — О? Так я с этого и начинал. ВЫ ЛИЧНО СЧИТАЕТЕ ЛЮБОВЬ ЗЛОМ? :)
                                                                                                                        –1
                                                                                                                        Вы первым скатились на оскарбления ;)
                                                                                                                          –1
                                                                                                                          Я? :) да ну?

                                                                                                                          И адрес уже не надо? Кто-то там что-то разбить кому-то собирался :)
                                                                                                                          Или опять за свои слова не отвечаем? :)
                                                                                                                            –2
                                                                                                                            г. Кемерово, пр. Октябрьский 51-126. Заметьте, я не спрашивал – я просто написал. Жду
                                                                                                                              –1
                                                                                                                              >>«ебало-то поломаю при встрече. „
                                                                                                                              Вы же рвались кому-то что-то набить :) Зачем нам ваш адрес?

                                                                                                                              К тому же я люблю, когда оно само ко мне приходит(приползает). Вобщем сервис рулит :)
                                                                                                                                –2
                                                                                                                                И все ещё нет вашего адреса)))))
                                                                                                                                  –2
                                                                                                                                  Бля, я с вами одояйцевыми запутался кому вообще писал)))))))))))
                                                                                                                      0
                                                                                                                      «Если взять всех разработчиков, то нас будет больше»
                                                                                                                      Вы опять? Я вас уже ткнул носом.
                                                                                                                      www.tiobe.com/index.php/content/paperinfo/tpci/index.html
                                                                                                                      Вот вам еще
                                                                                                                      langpop.com/

                                                                                                                      «Итого: более качественное комюнити»

                                                                                                                      Ммм. Что вы знаете о теории социальных систем?
                                                                                                                      А об эволюции? :)

                                                                                                                      Насчте вожака в стаде и одинокого волка, крайне рекомендую почитать о альфа-самцах и вообще структуре, например, волчьих стай :) Вожак получает хорошие физические преимущества и одиночки ему не конкуренты :)
                                                                                                                        –1
                                                                                                                        Как вы считаете, волчья стая (пусть для примера 10 особей) «въебет» стадо из 50 голов овец? :-) Если не брать в расчет что последние убегут или у первых в один момент случится переедание))
                                                                                                                          0
                                                                                                                          Я даже не считаю.
                                                                                                                          Я знаю, что волчья стая даже из 10ти особей не лезет на стадо из 50 голов овец. Ей это просто не по зубам.

                                                                                                                          Все что они могут это попытаться отбить 1-2 от стада и их загрызть :)

                                                                                                                          Еще вопросы? Уж с чем, чем, а с эрудицией у меня всегда было отлично :)
                                                                                                                    –1
                                                                                                                    Кстати, зачинщиков холиваров надо либо банить, либо находить в реале и давать по яйцам.
                                                                                                                      –2
                                                                                                                      Это холивар? :) По мне так чем меньше дебилов прыгнет в уезжающий поезд питона, тем проще жить будет… В конце концов, кто-то же должен уже докопать ямку PHPShop :)

                                                                                                                      Често сказать я не против языка PHP, мне нравится верхушка phpclub'а, я просто завидую из-за phpinside. Короче это НЕ холивар.

                                                                                                                      А на счет лично – всегда пжалуста ;)

                                                                                                                      P.S> На счет PHPShop – личная неприязнь.
                                                                                                                        0
                                                                                                                        Неприязнь к phpshop вполне оправдана, те кто его хотя-бы раз видел — те это прекрасно понимают, однако какое все-таки отношение это имеет к собственно PHP? Да, PHP позволяет писать программы настолько плохо, что стыдно даже от того что такую программу просто видел :) но тем не менее препятствий тому чтобы писать хорошо — я лично не вижу.
                                                                                                                          –2
                                                                                                                          PHPShop стал последним гвоздем в моем PHP-прошлом :)

                                                                                                                          Это как быдло в российских городах. Препятствий быть «не быдлом» я тоже не вижу, но быдло вокруг напрягает. Фактически получается что от моего нежелания быть быдлом не зависит концентрация быдла вокруг.

                                                                                                                          Я клоню к тому, что бардак не решить ещё большим бардаком. Нужно идти к стандартизации.

                                                                                                                      0
                                                                                                                      Фреймворки извлекаются из рабочих проектов. © ДХХ
                                                                                                                        –4
                                                                                                                        Получаются кривые фреймворки таким образом. Реальная разработка не подразумевает оттачивание архитектурных навыков и вылизывание кода.

                                                                                                                        * я о разработке, нацеленной на результат, а не на научные изыскания
                                                                                                                          +1
                                                                                                                          В смысле Rails — кривой фреймворк? Хы-хы.
                                                                                                                            0
                                                                                                                            Из любого правила есть исключения :) К тому же это не ПХП, правда? :) Я уже не говорю о том что это 37сигналс
                                                                                                                            +4
                                                                                                                            Django вроде тоже из проекта для lawrence.com вырос :)
                                                                                                                              –3
                                                                                                                              Вот теперь и ипуца) Честно) Там слишком много «магии», что порой не есть гуд.

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

                                                                                                                              Pylons в этом плане правильней (но и сложнее в понимании с его «луковичной» структурой).
                                                                                                                                –1
                                                                                                                                Зря минусите, сами мейнтейнеры джанги говорят о «магии» :)
                                                                                                                                  0
                                                                                                                                  И где же там в django много магии, по Вашему мнению?

                                                                                                                                  > Большее можно конечно, но очень высока вероятность необходимости вносить грязные хаки.

                                                                                                                                  o rly?
                                                                                                                                    0
                                                                                                                                    Давайте переместимся в блог Django ;)
                                                                                                                                  0
                                                                                                                                  Мне больше Django нравится :) Просто дело вкуса.
                                                                                                                                    0
                                                                                                                                    Впринципе, идеальный инструмент для постановки на поток создания сайтов (например у большинства веб-студий сайты по функционалу однотипные). Лично я для таких целей и пользуюсь
                                                                                                                                      0
                                                                                                                                      Для меня это скорее любимое хобби. Поэтому никакого потока :)
                                                                                                                                        –1
                                                                                                                                        Конечно лучше обсуждать подальше от врагов… Но :)

                                                                                                                                        Если не смотрели рельсы — гляньте. Пусть это Руби, но уверен – вам понравится. Сделано для людей, а не программеров. Опять же если лезть в экзотические области не требуется. Зато гламурненько. По сути джанга многое оттуда копирует с переменным успехом.
                                                                                                                                          0
                                                                                                                                          Смотрел рельсы, не понравился в них именно Руби :) Мне Питон симпатичнее как язык еще со времён программирования на PyGtk для Sharp Zaurus.
                                                                                                                                            0
                                                                                                                                            Господи, мальчик :)

                                                                                                                                            В нормальной разработке нет врагов :) в бизнесе тоже.

                                                                                                                                            Вчерашний конкурент, сегодня станет лучшим партнером. (за примерами далеко ходить не надо Novel-MS и т.д.)Именно поэтому не плюют в колодец, как это делаешь ты.
                                                                                                                                  0
                                                                                                                                  В нормальных проектах изначально создается архитектура, а потом пишется остальное. Ваши 9ть лет опыта видимо были проведены не за тем, чем нужно.
                                                                                                                                    –2
                                                                                                                                    Я реально знаком с разработкой сайтов, которые нужны «здесь и сейчас». Времени продумать «как сделать» не остается – слишком бешеный ритм и от него во многом зависит мой профит. Приходится делать как _кажется_ удачным. Если буду мусолить пол года один проект — столько денег и получу.

                                                                                                                                    Фреймворк должен быть красив и у него должны быть очень хорошо продуманы «точки расширения». В реальном же проекте, «расширение» того же диспатчера ненужно впринципе. В крайнем случае девелопер должен знать свой код сам.

                                                                                                                                    Да что уж говорить о фреймворках. Взять тот же PHP – делался для хоумпаги. Что в итоге? Вы писали под PHP 1? :-) Только в 4 версии появилась более-менее адекватная объектная модели… И то бред ещё тот. Вот вам и из проекта. Пятерка удачней, не спорю, но нормально работать с ней не довелось, поэтому и судить не могу.
                                                                                                                                      +1
                                                                                                                                      >>Я реально знаком с разработкой сайтов, которые нужны «здесь и сейчас».

                                                                                                                                      Говносайты на коленке, иначе говоря. Не делаются нормальные проекты впопыхах. Даже если сроки ужаты, время на проектирование всегда должно выделяться.

                                                                                                                                      >>В реальном же проекте, «расширение» того же диспатчера ненужно впринципе.
                                                                                                                                      Вы вели проекты, которые развивались несколько лет? Когда штат разработчиков состоит не из одного-двух человек и штат это частично меняется на протяжении жизни проекта?

                                                                                                                                      Я думаю нет, вы 9 лет занимались вот этими вашими хоумпагами, потому можете считать что и нет этих 9ти лет. Нормальных разработчик, что участвует постоянно в больших проектах за 2-3 перегонит ваш уровень. Потому что будет иметь представление о правильном построении проектов.
                                                                                                                                      можете обижаться, но не вам учить людей, делать им фреймворки или нет. Не та у вас квалификация.
                                                                                                                                        0
                                                                                                                                        ?!?!
                                                                                                                                        мсье может похвастаться опытом разработки по PHP 1.0? :)

                                                                                                                                        Это крайне жестоко :)
                                                                                                                                  0
                                                                                                                                  половина комментящих упоооорно, очень упорно игнорирует первую строчку поста.
                                                                                                                                  «Данная статья не призыв к действию, а лишь небольшая зарисовка на тему «Как бы я это сделал».»
                                                                                                                                    0
                                                                                                                                    ИМХО лучше б автор назвал статью «Архитектура веб-фреймворков» и соответственно изменил название.

                                                                                                                                    Планктон зайдет и по серьезе будет клепать туевухучу фреймворков
                                                                                                                                    0
                                                                                                                                    Написать йовый фрейворк автор и не старался, он показал на какой путь ступать, если кто-то будет делат что нибудь свое.
                                                                                                                                      +1
                                                                                                                                      Зачем показывать детям где спички? :)
                                                                                                                                        +1
                                                                                                                                        Спички — это «PHP за 24 часа для чайников».

                                                                                                                                        Если же большая часть людей начнут ковырять какой-нить фреймворк на предмет «что тут у нас», то с большой долей вероятности просто начнут его использовать, что не так уж плохо.
                                                                                                                                      0
                                                                                                                                      Странно, мне показалось, что автор осветил написание архитектуры скорее некоего веб-приложения, которое решили написать с нуля, а не фреймворка. Возможно, грань здесь тонкая :) Но, в принципе, интересно.
                                                                                                                                        0
                                                                                                                                        Как же я ненавижу фреймворки, если б кто-то знал… Всей душой и телом. Пишу на них, и ненавижу. А на работе требуют, что поделать (((
                                                                                                                                        Бывало прийду домой, сделаю себе чаю, закурю сигаретку, и попишу какой нить мелкий левачёк на голом линейном РНР. И на душе так хорошо становится. КРАСОТА!
                                                                                                                                          +2
                                                                                                                                          Аналогично. Хочется свободы и говнокода. ^_^
                                                                                                                                            0
                                                                                                                                            Если писать красиво, и использовать какой нить темплейтер, типа смарти или рнр_темплейтер, да иметь набор вылизанных за годы кодинга вспомагательных собственных функций или классов, то получается симпатишненький, маленький, легко читаемый и СРАЗУ понятный любому, кто его откроет гавнокодец… А главное — очень-очень шустрый.
                                                                                                                                            А какое ты хорошее слово подобрал — свобода. Именно её нехватает, когда фреймворки крамсают в хлам всю гибкость и лёгкость РНР. Когда имеешь задачу, ты строишь максимально лаконичное и просто её решение, а не пытаешься впихнуть её в рамки библиотеки.
                                                                                                                                            Эххх… Где это всё?
                                                                                                                                              0
                                                                                                                                              Гибкость PHP? Гмм… Чего-то я не понимаю, видимо :) Примеры гибкости в студию.
                                                                                                                                                0
                                                                                                                                                Как минимум это язык, который не зависит от платформы и сервера, это и есть гибкость. А одна только типизация переменных чего стоит?
                                                                                                                                                  +1
                                                                                                                                                  А какие языки (кроме MS-овских) зависимы от платформы и сервера?
                                                                                                                                          +1
                                                                                                                                          Так и видятся книжки будущего: «Пособие для чайников: как написать свой фреймворк за 5 дней»
                                                                                                                                            +1
                                                                                                                                            Да будет генерилка фреймворков. Галочки наставил — на выходе архив с исходничками и документация :)
                                                                                                                                              0
                                                                                                                                              Генерилка фрейморвков? о_О Зачем? Тогда пусть уже сайт генерит
                                                                                                                                                0
                                                                                                                                                Желательно на основе мыслеформ считываемых через веб-камеру (?))
                                                                                                                                            0
                                                                                                                                            ай-ай! опередили! :)
                                                                                                                                            напряжённо пишу «Как сделать фреймворк за два часа» =%)
                                                                                                                                            ээх! выкладывать позже придётся. но позитиф: можно допилить и внести правки :)

                                                                                                                                            зы: всё возвращается. пхп снова шаблонизатор, функциональный подход рулит. что не может не радовать, конечно
                                                                                                                                              0
                                                                                                                                              С нетерпением ждем!
                                                                                                                                              –3
                                                                                                                                              Вот за что я ненавижу пхп, так это за наличие многого количества быдло-кодеров. Примеров тьма выше. 0 слов по делу, одни «сам дурак». Не профессионально, товарищи.

                                                                                                                                              Аргументов нет – не может быть и разговора. Угонитесь ;-)
                                                                                                                                                +1
                                                                                                                                                Я сразу скажу, этот топик не читал, но за этот Ваш топик, и за его призывы, гнать бы вас, бездарных дилетантов с Хабра. Именно из-за таких скрипт-кидисов, поверхностно знающих как Питон, так и ПХП, Хабр иной раз кажется сборищем нубов, только и способных звать на помощь своих друзей, чтобы подлечили карму и засрали её без разбора оппонентам.
                                                                                                                                                  0
                                                                                                                                                  а я-то думал что это ты прям с катушек скатился %-)
                                                                                                                                                    0
                                                                                                                                                    а? =) да нет, всё адекватно %)
                                                                                                                                                      –3
                                                                                                                                                      Опа, отсосал)
                                                                                                                                                    –2
                                                                                                                                                    Ещё раз?))) Это уже становится забавно)

                                                                                                                                                    «Напиши это 100 раз в посте и получи плюшку»
                                                                                                                                                    –2
                                                                                                                                                    Иди лучше матан учи, ребенок.
                                                                                                                                                      –2
                                                                                                                                                      У меня уже вышка по этому предмету ;-)
                                                                                                                                                    +1
                                                                                                                                                    прерву ваши споры несколькими вопросами:

                                                                                                                                                    1. i18l

                                                                                                                                                    Как это делается по людски?

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

                                                                                                                                                    2. Роутинг

                                                                                                                                                    Тоже неудобно в файлах хранить всю байду с ЧПУ особенно при условии что заказчик может (и скорее всего захочет) иметь возможность менять урлы по своему усмотрению + с точки зрения сео стоит избегать километровой вложености — типа /kvakriry/ru/arenda/1/0/2/zurupinsk — это гониво — должно быть чтото типа такого /arenda-kvartir-zurupinsk.

                                                                                                                                                    Может есть какойто более правильный подход?
                                                                                                                                                      0
                                                                                                                                                      Попробуйте gettext — это одно из простых решений, но отнюдь не самое плохое…

                                                                                                                                                      Насчет роутинга — для проекта на ZF все роуты можно сохранить в ini или xml конфиге, думаю такая же ситуация и в большинстве других фреймворков.
                                                                                                                                                        0
                                                                                                                                                        из того что я только что нарыл про gettext — оно не панацея — так как не подойдет для мелких проектов которые хостятся на обычных хостингах, где чтолибо доставлять просто нет возможности

                                                                                                                                                        по поводу роутинга — так оно и получается в zf, ci, ko да и других таже самая картина — тут просто наверное я ищу не то что мне надо (я бы, к примеру, хотел видеть систему с помощю которой можно было бы по бырику сделать для клиента проект с людской админкой и т.п., а это уже не фреймворки, а cms, а фреймворки это эдакий конструктор лего от одних крутых программеров для других)
                                                                                                                                                          0
                                                                                                                                                          посмотри Symfony — с роутингом вроде проблем нет, да и с мультиязычностью вроде не плохо…
                                                                                                                                                            0
                                                                                                                                                            как раз в тему, забил сегодня в поиск Extjs generator и первое что увидел: Symfony Extjs Generator (http://extjs.com/forum/showthread.php?t=14963)
                                                                                                                                                      +1
                                                                                                                                                      > Данная статья не призыв к действию, а лишь небольшая зарисовка на тему «Как бы я это сделал».

                                                                                                                                                      Ну что-то уж очень небольшая зарисовка, описание отрывочное.
                                                                                                                                                      Это как если бы вы говорили о создании автомобиля: 4 колеса поставим сюда (в «Форде» так сделано), лобовое стекло будет здесь, заднее сиденье будет там (как у «Фокуса-2») и т.д. Но при этом не упомянули бы о бензобаке, подвеске, обивке салона или ещё чего-нибудь.
                                                                                                                                                        +1
                                                                                                                                                        Антон, Вы пишете качественные статьи, спасибо.

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

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

                                                                                                                                                        В тривиальные задачи я бы еще добавил обработку ajax-запросов
                                                                                                                                                          0
                                                                                                                                                          ей-богу, как же я рад что слез с PHP несколько лет назад. Правда если раньше я в общем-то был не против, чтобы молодёж на php училась, то сейчас, когда сам язык и библиотеки уже совсем в чумовую сторону зашагали — боязно =).

                                                                                                                                                          однозначно, пхп, требующий просто дофига времени сам не себя (особенно при высоконагруженных приложениях… вот свистопляс начинается..) это главная его проблема.

                                                                                                                                                          А по поводу конкретно идей — тренд последнего времени — малююююююююсенькое ядро и все остальное модулями. Ядро может быть реально 1 тысяча строк максимум. В php такое тоже можно реализовать достаточно безпроблемно, разве что сделать чтобы такая модульная связка работала быстро и при этом не используя дикую магию — вот задачка =). Мне даже интересно как бы вы обрабатывали горку зависимостей модулей и как бы все это дело кешили — не каждый же запрос сие творить ;).
                                                                                                                                                            0
                                                                                                                                                            На что перешли, если не секрет? и почему перешли именно на этот язык? спасибо.
                                                                                                                                                            0
                                                                                                                                                            Меня всегда удивляли лозунги типа — не плыви против течения, не изобретай велосипед, зачем писать когда есть уже написанное и профи. Извините, но что за средне вековые мысли. Если призывать что либо не делать и все не будут этого делать то где прогресс. 90% удачных и мощных продуктов/идей вышли изначально из под рук обычных кустарей(извините кого обидел). А на вопрос — зачем писать свой фреймворк? когда есть уже, отвечает каждый для себя сам. Если тебе его писать не(интересно, нужно) ума не хватает и т.д. то это дело твое.

                                                                                                                                                            Only users with full accounts can post comments. Log in, please.