Хватит изобретать велосипед

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

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

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

    1. Редакторы
    Здесь два претендента TimyMCE и FCK. Для обоих есть плагины, упрощающие их интеграцию в RoR-приложение.

    Смотрим.
    wiki.rubyonrails.org/rails/pages/HowToUseTinyMCE и
    www.underpantsgnome.com/projects/fckeditor-on-rails

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

    2. Вывод HTML
    Можно пользоваться стандартным хелпером h(), но он просто экранирует все символы и теги HTML. Для вывода отформатированного HTML текста я использую плагин WhiteList, который отфильтровывает все небезопасные теги.

    weblog.techno-weenie.net/2006/9/3/white-listing-plugin-for-rails

    Всё просто: <%= white_list(@article.body) %>

    3. Снова вернёмся к загрузке файлов на сервер. Здес поможет плагин attachment_fu
    clarkware.com/cgi/blosxom/2007/02/24
    Он позволяет хранить данные в базе или в файловой системе, проверяет загруженые файлы, может
    обрабатывать изображения.

    class Photo < ActiveRecord::Base
    has_attachment :content_type => :image,
    :storage => :file_system,
    :min_size => 0.bytes,
    :max_size => 500.kilobytes,
    :resize_to => '700x500>',
    :thumbnails => {:thumb => '200x200>'},
    :processor => :Rmagick
    validates_as_attachment
    end

    4. Сообщения об ошибках. Если какое-то поле модели не проходит валидацию, то рейлс генерирует сообщение типа Username is required, указывая имя поля в начале предложения. При попытке задавать собственные сообщения об ошибках такое поведение может быть не удобно. Я хочу вывести что-то вроде «Введите правильно свой логин». Это можно сделать при помощи плагина Custom Error Message.
    wiki.rubyonrails.org/rails/pages/Custom+Error+Message
    Укажите символ "^" в начале своего сообщения об ошибке, и имя поля не будет к нему автоматически добавляться.

    Сравните
    validates_acceptance_of :accepted_terms, :message => 'Please accept the terms of service', что сгенериует «Accepted terms Please accept the terms of service» и
    validates_acceptance_of :accepted_terms, :message => '^Please accept the terms of service'

    5. Капча. Тут всё просто. Генерировать капчу и проверять на валидность позволяет плагин SimpleCaptcha.
    expressica.com/simple_captcha

    Выводим капчу <%= show_simple_captcha %>.
    Проверяем
    class User < ActiveRecord::Base
    apply_simple_captcha
    end
    user.valid_with_captcha? или user.save_with_captcha

    6. Постраничный вывод. Плагин WillPaginate расширяет ActiveRecord, добавляя метод paginate,
    который практически идентичен стандартному find, а также добавляет простой хелпер will_paginate в шаблоны. Очень удобный и гибкий плагин.

    github.com/mislav/will_paginate/wikis

    @topics = Topic.paginate(:page => params[:page], :per_page => Topic.per_page, :order => 'created_at')

    7. Регистрация, логин, логаут. Плагин Acts_as_authenticated сгенерирует контроллер, модель и
    шаблоны страниц, необходимые для регистрации и аутентификации в приложении. Сгенерированный код легко подстроить под свои нужды.

    wiki.rubyonrails.com/rails/pages/Acts_as_authenticated

    8. Сжимаем яваскипт и css. Плагин AssetPackager в режиме development подгружает все файлы js и css по одному, в режиме production использует их сжатые в один файл версии.

    synthesis.sbecker.net/pages/asset_packager

    P.S. Все плагины просты в установке и использовании. Требуют минимум чтения и кодирования.
    Поделиться публикацией

    Комментарии 109

      +1
      Пока это очень скромный комплект, как раз на уровень сайта-визитки, буду рад в перспективе увидеть продолжение. Вам плюс.
        0
        Если изобретать не велосипед, то что еще изобретать?

        Кто-то ведь пишет различные визуальные редакторы и фреймворки?
          0
          Я не ратую за прекращение исследований, но они должны вести к чему-то новому или более совершенному. Если вы изобретёте 2-хколёсный велосипед, с которого невозможно будет грохнуться, то честь вам и хвала!
            +19

            не велосипед, но двухколесный вполне (:
              +1
              Вот это оригинальное решение.
                0
                Проходимость невысокая, для того, чтобы претендовать на замену велосипеду.
                  0
                  зато клево как! хочу сигвей. хотя велик тоже клево
                    +2
                    Конечно, клёво, недавно ездили на трек для радиоуправляемых багги - там шли испытания вот этих вот проходимых сегвеев. Я что-то не попросил попробовать :( А в Бангкоке, на самом большом рынке Тайланда, полиции куплены сегвеи, чтобы ловить воров, если шо. Они там так гордо разъезжают!
                    0
                    насколько помню (видел такую штуку в магазине), производитель декларирует весьма неплохую проходимость. хотя велосипед ИМХО все же надежнее :)
                      –1
                      Кочки-с. Велосипед обойдёт кочки, а где не обойдёт - переедт. А эта штучка зацепится дном.
                        0
                        Эту штуку можно вполне назвать паркетным велосипедом ;)
                  • НЛО прилетело и опубликовало эту надпись здесь
                      0
                      А потом будет работать как самокат: отталкивайся одной ногой да едь :)
                      • НЛО прилетело и опубликовало эту надпись здесь
                    +1
                    чтобы они вели к чему-то новому или ьолее совершенному, нужно набраться опыта :)
                      0
                      Но ведь катаясь на велосипеде вы не наберетесь опыта в их изобретении ;)
                        0
                        И я про то-же говорю.
                    +1
                    Согласен, если бы мы не изобретали велосипед, то ездили бы вот на этом, наверное:
                    http://lemoi-www.dvgu.ru/DNN/Portals/0/M…

                    Для кого-то в словосочитании основной смысл направлен на "велосипед" (в смысле, зачем что-то делать, если итак уже есть?), а для кого-то на "изобретать" (в том смысле, что эволюция это хорошо). Ничего не вижу плохого в том, чотбы улучшать что-то, если ты думаешь, что сделаешь лучше.
                    0
                    класс! для PHP такую статью напишите? :)
                      0
                      Для пхп гугла, вроде как, достаточно. А руби пока не столь популярен чтоб статей такое количество было.

                      p.s.: вам домашнее задание. Напишите такую статью для PHP :-)
                        0
                        может, и напишу. когда-нибудь :) ищите в ваших рсс-ридерах!
                          0
                          С РНР всё проще, на выбор куча решений, вот только задолбёшься мусор отсортировывать.
                          Посмотрел страничку пейджера, на первый взгляд деревянный какой-то. А вот загрузка файлов мне понравилась, только пока непривычно валидацию и дополнительные дейтвия на модель перелаживать, но очень эллегантно получается.
                            0
                            Пейджер отличный. Хорошо интегрируется в ActiveRecord.
                              0
                              так мне больше нравится http://www.phpdoctrine.org/documentation/manual/0_10/?chapter=utilities#pagination
                          +1
                          если проводить аналогии, то не для PHP, а для Zend Framework. Хотя пока все сами пишут для себя хелперы и плагины. А было бы интересно.
                          +3
                          Используя готовые решения - вы тоже изобретаете велосипед.
                          И иногдла в таких случаях, то руль, то педали оказываются от детского велосипеда или прикручены не с той стороны.
                            0
                            так и приходиться переделать такие части...
                              0
                              ...а после двух-трех больших проектов, собрать все эти части в свой собственный велосипед, наречь каким-нибудь именем, оформить внутрифирменные инструкции по использованию в качестве руководства по эксплуатации, и выложить всё это дело в сеть.
                                0
                                ... и будет етот велосипед настолько удобен, что будет он вездеходом со временем, поскольку будут убрани лишие части и доставлятса только необходимие функции...
                              0
                              Надо пользоваться проверенными вещами, а не брать какой попало код. Тоже с умом подходить...
                                +1
                                Только не подумайте что я против совсем - я совсем не против. И дорого дам за хороший, проверенный модуль.
                                  0
                                  И вы не думайте, что я против написания собственного кода :)
                                +1
                                сделать кто-нить подобную статью про пхапе, плииз =)
                                  0
                                  кстати, почти все плагины мною опробованные и используемые. ток мне почему-то больше нравится bundle_fu вместо AssetPackager
                                    +3
                                    Люди пишут всё с нуля ведь не от того, что им больше нечем занятся - они делают это в соответствии со своими потребностями, будь то желание создать что-то великое, желание больше узнать о программировании или же создать удобный для себя инструмент.
                                      +1
                                      Довольно часто эти люди занимаются таким вот самообразованием и созданием дополнительного удобства для себя за счёт работодателя.
                                        +1
                                        Очень часто люди просто не хотят осваивать чужой инструментарий и делают это только тогда, когда просто не в состоянии его повторить сами. От этого надо лечить.
                                        Создать что-то великое - это похвально, но поверьте, большинством в ежедневном написании кода движет не это.
                                          0
                                          А когда люди используют чужой код они часто просто не хотят писать сами. Вопрос в том, готовы ли вы взять на себя ответственность за чужой код - за его качество, за возможные дыры, за масштабируемость, производительность, соответствие решаемым задачам или вас устроит возможность переложить ответственность на сообщество разработчиков или фирму производитель. Оба подхода имеют свои преимущества и недостатки, наприпер при разработке с нуля вы
                                          1. автоматически становитесь самым компетентным лицом в своем движке, и знаете его лучше всех :) в некоторых случаях это очень серьезно снижает затраты на развитие проекта
                                          2. в движке будут отсутствовать общеизвестные дыры, что не позволит пионерам сломать сайт по инструкции
                                          3. вы повышаете свои навыки в разработке. один и тот же модуль всегда можно сделать немного по разному
                                          4. растет карма
                                            +1
                                            Да вы сплошь и рядом используйте сторонние разработки: ОС, веб-сервер, PHP, Ruby on Rails или на чём вы ещё пишете. Везде есть свои баги, многие даже известны.
                                            Обычно я несу ответственность за весь проект, это не мешает мне использовать и рекомендовать делать то же самое другим чужой код.
                                            1. компетентным лицом надо ещё быть.
                                            2. такие дыры можете сделать вы или человек в вашей команде; или доверять только себе?
                                            3. не забываем перенимать чужой опыт
                                            4. карма растёт, когда проект готов и приносит результат.
                                              0
                                              Так и есть, готовая ОС, PHP, Apache. Некоторые идут еще дальше и покупают коробочную CMS, например "Umi CMS", можно купить даже готовый сайт :)
                                              Знаете, то что я сейчас скажу это конечно эмоции к которым не применимы суровые законы бизнеса, но как разработчик я люблю создавать новое. Готовые фреймворки, библиотеки, скрипты очень упрощают жизнь, они очень удобны, но также они ограничивают возможности для самореализации. Вы получаете идеологию, архитектуру, компоненты. Вы начинаете их использовать, но не потому что вам нравится паттерн MVC, а потому что так однажды придумали умные разработчики движка. При этом мотивации что-то менять практически нет - стоит только сделать какое-то большое изменение и код если не сломается, то как минимум станет несовместимым с официальной версией.
                                                +1
                                                последнее предложение - попробуйте на досуге Друпал, вам должно понравиться ;)

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

                                                по-поводу - упрощают жизнь, вы ведь не пишите постоянно с нуля допустим аплоад файла, а просто берете и копируете строки одного из предыдущих проектов, так же и с фреймверками - только автор тех строк не вы. И когда вы работаете с чужим кодом, то - если вы юниор(было время у всех) - то научитесь многим вещам из тех же цмс(если эти цмс - не WP :) просто глядя на код, а если бомбить в одиночку не равняясь ни на кого и отрицать готовое(сделанное кстати хорошими командами), то есть риск замкнуться в безграмотности, согласны?
                                                  0
                                                  Мотивы могут быть разными. Можно хотеть собрать мотоцикл можно хотеть разобраться в его устройстве и тут уж кто глубже копнет. Но пока вы через себя не пропустите, не прочувствуете причины тех или иных решений которые применили создатели мотоцикла, пока не узнаете о тех проблемах с которыми столкнулись они, в лучшем случае вы сможете расчитывать на звание слесаря по мотоциклам.
                                                  Одно дело пользоваться чужим опытом, и совсем другое - его перенимать.
                                                  Разумеется я тоже пользуюсь решениями других разработчиков. Но я говорю сейчас не об этом, практика показала что большинство программистов так никогда и не заинтересуется абстрактным уровнем движка, их вполне удовлетворят существующие базовые методы. Но ведь кто-то эти методы пишет...
                                                    0
                                                    поверхностно знать framework - это дилетанство, я не говорил что ЗА использование без непонимания.
                                                      0
                                                      черт, тут опечатка -
                                                      поверхностно знать framework - это дилетанство, я не говорил что ЗА использование без понимания.
                                                      0
                                                      За долго до того, как я узнал о том же рейлс, я уже вовсю пользовался и MVC, и ActiveRecord. Я был тогда начинающим, но умные люди показали. Спасибо им.
                                          0
                                          Да, вы правы. Но согласитесь, это уже отдельный вопрос, за чей же счёт они само совершенствуются. Или я ошибаюсь?
                                            +2
                                            если честно, attachment_fu один из самых ужасных плагинов, которых я видел... жевал и кололся пока не увидел paperclip - всем советую

                                            для "регистрации\логаута" пользуюсь restful_authentication, он как-то роднее т.к. стараюсь все делать как DHH советует (чего и вам советую)

                                            как редактор использую tiny_mce + плагин для загрузки изображений написанный одним из наших соотечественников (только адаптировал его с 1.2.* на 2.0.*)
                                              0
                                              отсутствие кармы (по причине сегодняшней регистрации) не позволило мне разместить ссылку на paperclip, вот она - http://giantrobots.thoughtbot.com/2008/3/18/for-attaching-files-use-paperclip
                                                0
                                                Надо попробовать эти альтернативы. Кстати restful_authentication был написан как замена acts_as_authenticated, но по правилам КEST.
                                                  0
                                                  о чем и говорю ,) именно DHH старательно продвигает REST, своим авторитетом, движение среди rails разработчиков
                                                  0
                                                  что ж такого ужасного в attachment_fu? код хорош, пользоваться удобно ( синтаксис у paperclip практически идентичен ), плюс много бекэндов - я для s3 использую.
                                                    0
                                                    наверное зависит от восприятия, но сравнить удобство работы этих двух плагинов я бы не решился, с сентября написал около 10 проектов с использованием attachment_fu и у меня о нем сложились не самые лучше впечатления
                                                      0
                                                      посмотрел в код paperclip и не заметил большой разницы между этими двумя плагинами - paperclip явно основан на или вдохновлен attachment_fu. чем же он так сильно и в лучшую сторону отличается? ну в attachment_fu поле в модели вбито, а тут задавать можно. что еще?
                                                        0
                                                        как сделать несколько аттачей у одной модели ? ошибки при удалении модели без аттачмента, ошибки при неполном обновлении модели (без аттачмента), остальное стараюсь забыть как страшный код... конечно все ошибки можно обойти или избежать, но для этого требуется писать дополнительный код, что я в принципе не люблю
                                                          0
                                                          Пример. У пользователя много фоток.
                                                          class User
                                                          has_many :photos
                                                          end

                                                          class Photo
                                                          has_attachment
                                                          end
                                                            0
                                                            как сделать связь has_many я знаю... а как сделать у одной модели? как я уже говорил, я не люблю писать дополнительный код и плодить сущности тогда, когда они мало нужны
                                                              0
                                                              Здесь атачмент рассматривается как сущность, поэтому для его реализации должна быть модель, модель, которая ведёт себя как атачмент :)
                                                            0
                                                            у меня было несколько таких случаев, когда упирался в необходимость делать несколько аттачей. тогда я понимал что у меня неправильная логика и делал что-то вроде

                                                            class Attachment < ActiveRecord::Base
                                                            belongs_to :attachable, :polymorphic => true
                                                            end

                                                            не пожалел ни разу. остальные указанные Вами ошибки не были встречены. все что я изменял в attachment_fu - добавление еще одного modifier в geometry.rb для поддержки нужного мне эффекта при производстве аватар.

                                                            Видимо, дело и правда в восприятии) кто-то восхваляет питоновскую индентацию, а меня она аж коробит, et cetera
                                                            Anyway, спасибо за ссылку, плагин легкий и понятный, может быть пригодится
                                                              0
                                                              я тоже много раз выкручивался через полиморфные объекты, сейчас понимаю что накладок по поддержке кучи полиморфного кода можно было бы избежать
                                                              всегда пожалуйста, ведь мы тут как раз для обмена полезной информацией )
                                                    0
                                                    1. Редакторы:
                                                    Здесь хотелось бы упомянуть редактор от "YUI" : http://developer.yahoo.com/yui/editor/

                                                    его можно очень легко настроить и добавить необходимые функции
                                                      0
                                                      Он, вроде, намного проще, чем вышеупомянутые.
                                                      +2
                                                      Всего несколько дней назад я в своем блоге как раз писал статью про изобретение велосипедов. Не вдаваясь в подробности, скажу лишь что приведенные вами аргументы
                                                      1. так оно надёжнее,
                                                      2. лень копаться в чужом коде,
                                                      3. самореализовываюсь.
                                                      на самом деле черезвычайно важны. Для молодых разработчиков они имеют вообще первостепенную важность.
                                                      Да, правда, что изобретая велосипед вы заново напишите 90% уже существующего функционала. Да, правда, что он вероятно будет не так хорош как существующий, Но оставшиеся 10% делают то, что называется прогресс.
                                                        +1
                                                        Если человек смотрит на существующий вариант и понимает, что в нём не то, тогда его попытки достойны похвалы. Но если мотивация - "ой, дай-ка я перепишу всё с нуля, мне так проще будет разобраться позже", то разве здесь есть хотя бы 10% прогресса?
                                                          0
                                                          Прогресс однозначно будет в том, что ему будет проще самому разобраться в дальнейшем, а также в том что он приобретет опыт в разработке функционала вместо того чтобы использовать чужое решение.
                                                          Часто эту мысль отвергают под предлогом того что программист вместо того чтобы решать чужие проблемы, решает свои - учится за счет заказчика, работодателя итд. Но согласитесь, это не повод отказываться от собственных интересов. Работа должна быть взаимовыгодной.
                                                            0
                                                            >Работа должна быть взаимовыгодной.

                                                            Вероятно, не у одного меня промелькнула сейчас мысль, что программист обычно деньги за свою работу получает :)
                                                            И что обычно работодатель $10..$40/час хотел бы платить не за самообразование своего работника, а за реализацию продукта с заданными свойствами с наименьшими затратами сил/средств.
                                                        0
                                                        А у меня только один вопрос про изобретательство велосипедов к автору статьи :) Итак, барабанная дробь и всеобщее внимание... Зачем нужен Ruby, когда есть (в алфавитном порядке) ActionScript, ALGOL, APL, BASIC, BLISS, Boo, C, C++, C#, Chrome, D, Dylan, Eiffel, Erlang... (мне продолжать? :). Если бы господин Матсумото не решил бы поизобретать велосипеды, то сейчас бы этой статьи здесь не было бы. В чём я не прав?
                                                          0
                                                          Господин Матсумото не переизобёл велосипед, а создал новую обалденную модель - пример остальным.
                                                            0
                                                            Ну и? А с чего начинается создание новой модели? С попытки изобрести велосипед :) Так что это... Не судите строго изобретающих, кто знает, сколько там ещё обалденных моделей?
                                                              0
                                                              "Создал новую обалденную модель" - спорно. В руби нет ничего уникального. Смолтолк + перл + немного кусочков других языков.
                                                                0
                                                                Ни один из ныне популярных языков программирования не является оригинальным или уникальным - все используют и развивают идеи, доставшиеся в наследство от других языков.
                                                                По этому - как для Ruby, так и для любого другого языка - "новое" заключается именно в правильном сочетании известных подходов. Так для Ruby - "новое" - это сочетание полностью объектно-ориентированного языка (как Smalltalk) с возможностями функциональных языков (как LISP) - и вот именно говоря об этом сочетании, вполне можно сказать что Ruby - уникален.
                                                                  0
                                                                  "новое заключается именно в правильном сочетании известных подходов" - так это и есть изобретение велосипеда, благо куча других языков поддерживают обе парадигмы и совсем не считают это своей уникальной возможностью.
                                                                    +1
                                                                    Они "не считают это своей уникальной возможностью" - потому, что не реализуют полностью обе парадигмы. А Ruby - реализует - и в этом его отличие.
                                                                    Ни Java, ни C++, ни C#,Python,PHP и т.д. - не являются полностью объектно-ориентированными: у них есть встроенные примитивные типы данных, не являющиеся объектами. В Ruby/Smalltalk – все объект. В этом отличие.
                                                                    По поводу функционального парадигмы в других ООП языках – сравнивать вообще смешно: анонимные функции, функции высших порядков, замыкания, продолжения(Continuation), возврат значений любым выражением, отражения – в других коммерческих языках этого либо нет, либо реализовано в урезанном виде (за исключением Python, где есть почти все это – но все же не полностью). В этом отличие.
                                                                      0
                                                                      Раньше, в 19-м веке, велосипеды были педальными, с прямым приводом нога-колесо. Затем изобрели велосипед с цепной передачей - это был уже шаг вперед. И это уже небыло "изобретением велосипеда" в текущем понимании словосочетания ;)

                                                                      "Правильное сочетание известных подходов" - то есть приносящий новый ПОЛЕЗНЫЙ функционал - это не велосипед.
                                                                      Велосипед - это именно что повторение уже написанного, может быть немного внутренне отличающегося - но не создающего новые возможности, не имеющее большей эффективности в каких-то задачах, не оправдывающего трудозатраты на изготовление этого велосипеда.
                                                              0
                                                              "отфильтровывает все небезопастные теги"

                                                              исправьте, пожалуйста
                                                                +1
                                                                Поговорка-подсказка "Как ужасно и опасно букву "Т" писать напрасно"

                                                                п.с. Извините, ещё хотел сказать, что ваш ник при первом прочтении увидел как "onotholey" :) честное слово, просто высказываюсь, не хочу обидеть :)
                                                                  0
                                                                  Забавно :)
                                                                  Приходится признать, что к аццкой сотоне Хабра я никакого отношения не имею, что впрочем совершенно логично вытекает из содержания моих комментариев на этом сайте.
                                                                +1
                                                                "Зачем изобретать велосипед, если можно согнуть уже существующий" (С) башорг
                                                                  0
                                                                  Для TinyMCE есть плагин для загрузки изображений. Мы писали про него тут. Может кому и пригодится!
                                                                    0
                                                                    В закладки.
                                                                      0
                                                                      спасибо конечно за вашу разработку, но тут речь идет о реализациях на ruby
                                                                      +2
                                                                      Почему любые статьи про Руби непременно сводятся к холивару?

                                                                      Плагины - удобны! В 90% случаев их функциональности хватает. А когда нехватает - начинается прогресс.
                                                                        0
                                                                        Потому что в мире слишком много ортодоксальных PHP-стов, которых раздражают неоправданные, на их взгляд, ликования по поводу нового языка/фреймворка :)
                                                                        Ну, и которые не желают тратить месяц времени на изучение RoR - увеличение на 50% - 100% их заработной платы почему-то им не кажется достаточно веским аргументом в пользу этого :)
                                                                          0
                                                                          c каждым новым языком\фрейморком зарплата растёт на 50% - 100% ? есть ли предел этому росту?
                                                                            0
                                                                            Я имел в виду, что сейчас RoR довольно популярный фреймворк, и нередки объявления, где рельсовикам предлагают участие в стартапе, и озвучивают цифры вроде 4К$ - 5К$ /мес. При том что средний ПХП-ист получает примерно в 2 раза меньше. При желании можно поймать момент, и повысить свою з/п, а заодно и новые скилы опробировать на деле.
                                                                              0
                                                                              вы же не думаете, что стартапы ищут "месячного" рельсовика на эту цифру? ищут человека с реальным опытом и знаниями, чтобы этот самый стартап стартануть что-ли в ближайшем обозримом будущем.

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

                                                                        "- Теперь-то я это понимаю, - сказал Джордж, - до того ясно, что
                                                                        только удивляюсь, каким я был слепым. В конце концов, кто изобретает но-
                                                                        вые модели механизмов, для которых нужны новые модели специалистов? Кто,
                                                                        например, изобрел спектрограф Бимена? По-видимому, человек по имени Би-
                                                                        мен. Но он не мог получить образование через зарядку, иначе ему не уда-
                                                                        лось бы продвинуться вперед.
                                                                        - Совершенно верно.
                                                                        - А кто создает образовательные ленты? Специалисты по производству
                                                                        лент? А кто же тогда создает ленты для их обучения? Специалисты более
                                                                        высокой квалификации? А кто создает ленты... Ты понимаешь, что я хочу
                                                                        сказать. Где-то должен быть конец. Где-то должны быть мужчины и женщины,
                                                                        способные к самостоятельному мышлению."
                                                                          0
                                                                          Припоминаю роман! :)
                                                                          0
                                                                          *на всякий случай* я не говорю, что надо все писать с нуля. я говорю о том, что не надо мешать человеку пытаться сделать что-то свое. а если вы думаете, что он зря получает деньги, то увольте его. если вы, конечно работодатель ;o).
                                                                            0
                                                                            Лучше самому сделать свой велосипед, пусть корявенький, но зато на нем разобраться, как велосипеды действуют, чем пользоваться чужими и не понимать, как педали связаны с колесами и нафига там цепь.
                                                                            А за ссылки спасибо! ))
                                                                              0
                                                                              сделать свой корявый велосипед, и потом - пользоваться чужими, не-корявыми? :)
                                                                                0
                                                                                Ну может и так:) Зато будешь знать, как эти велосипеды действуют. А если есть время и опыт, так свой может получится и не хуже чужих.
                                                                                Хотя, конечно, тут от задачи все зависит и от времени, которую на нее можно затратить. Из подручных средств за пару дней хороший горный велосипед при всем желании не сделать.
                                                                              0
                                                                              Для аплоада файлов использую file_column, правда со своим минипатчиком.
                                                                              Возможно стоило упомнить рутилсы
                                                                              В пункте авторизация сильно удивился увидя не restful_authentication
                                                                                +1
                                                                                Спасибо за подборку. Для осваивающих RoR — дополнительный кирпич в голову. Пора написать уже какой-нибудь сверхпопулярный всероссийский щебет.ру (или чириканье.ру).
                                                                                  0
                                                                                  хватит навязывать свои мнения. А изобретать велосипед никогда не поздно. С ваших слов, велосипедостроение так и остановилось бы на деревянном каркасе. да и потом плагин для пагинации?!?!?! сделать LIMIT 10, 10 в мускуле, это отдельный плагин?
                                                                                    0
                                                                                    Вы мало что поняли. Я говорю о повторном использовании кода в RoR, которое в частности реализовано в виде плагинов. По-страничный вывод не сводиться только к LIMIT 10, 10.
                                                                                      0
                                                                                      Если вас не интересует программирование и процесс разработки вцелом — скачайте php nuke и будте счастливы. Та и «плагинов» хватает и по производительности как руби =)
                                                                                        0
                                                                                        Я как раз-таки и отвечаю за процесс разработки в целом.

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

                                                                                        Так что не воспринимайте этот топик как протест против творчества и прогресса, но и не забывайте об экономическом факторе. Истина посередине.
                                                                                          0
                                                                                          Вы знаете, в чем то вы правы. Но есть несколько НО.
                                                                                          1) Все хорошо в ваших словах, но для «тертых» разработчиков, не для зеленых. Модули это здорово. Часто сталкиваюсь с тем, что самописные какие-то модули устаревают, а публичные аналоги обновляются регулярно. Но, опять же, возвращаясь к зеленым, которые чаще не учатся программированию. Для них подобные плагины это зло.
                                                                                          2) Порой полезно заставлять себя что-то делать, а не использовать готовые модули.
                                                                                          3) Насчет рутины не согласен. Конечно, каждый день варить макароны и есть их надоест. Проще купить полуфабрикат. Но если готовить не только макароны, но и подойти к вопросу творчески.
                                                                                            0
                                                                                            В хорошем проекте эти плагины решат лишь пару пунктиков поставленной задачи, ещё останется на чём потренироваться.

                                                                                            Хотя, конечно, сам много что переизобретал. Молодым действительно полезно :)
                                                                                    0
                                                                                    Если б люди не переизобретали колесо, то сейчас ездили бы на каменных.
                                                                                    Хотя с другой стороны: зачем изобретать новый велосипед, если можно поломать старый?

                                                                                    Относительно все, в зависимости от ситуации. Нельзя найти универсальное решение на все случаи жизни.
                                                                                      –2
                                                                                      п.5. — капча?! Сами разгребайте логи после роботов, с такой-то капчей.
                                                                                      Если предположить, что п.7 столь же убог, как эта капча, а ресурс интересен специалистам, ждите массового взлома.
                                                                                      п.3., закачка файлов. А что, правда, в RR всё так сложно, что закачка файлов — это то, чем стоит поделиться? 10 строчек на Перле...
                                                                                        +1
                                                                                        5. Не нравится сложность капчи - перепишите генерацию изображения.
                                                                                        7. Обычная реализация регистрации и логина, хотите усложнить - добавьте пару строк.
                                                                                        Понадобиться изменить 10% уже готового кода. Экономия на лицо. Удобные команды установки плагинов позволят легко внедрять их в другие приложения.
                                                                                        3. Закачка, проверка валидности файла: размер, тип и многое другое -, изменение размеров изображений, создание превьюшек для изображений, сохранение файлов в файловой системе, базе или другом хранилище, привязка к модели с различными типами связей. 10 строк говорите? Перл говорите? Не убедили.
                                                                                        0
                                                                                        Личный опыт. Когда начал использовать jQuery, меня поразило и очень приятно обрадовало обилие плагинов под все возможные задачи (какие я тогда мог придумать). Плагины были красивые, легко конфигурируемые, легко встраиваемые - поначалу не мог нарадоваться. Когда собрал свой проект из плагинов и реализовал необходимое мне поведение, начались проблемы.

                                                                                        То что прекрасно работало в режиме демо, отказывалось работать в режиме реальной эксплуатации, а на старых машинах - ппц тормозило. Что-то отваливалось в ie, что-то не хотело работать в opera. Поскольку сроки поджимали, я подумал, что проще будет найти ошибки и пофиксить их, благо лицензия позволяла фиксить ошибки.

                                                                                        В итоге ошибки были исправлены, проект сдан, но потребовалось огромное количество времени, чтобы заставить всё работать как надо. Размер загружаемой библиотеки перевалил за 500К (в сжатом виде).

                                                                                        Однако, по ходу исправления кода я заметил, что там делаются многие ненужные мне вещи, отказавшись от которых я ничуть не страдаю в функционале, зато выигрываю в скорости и размере библиотеки. И стал удалять ненужный код. В результате написал всё сам, с нуля, убрав ненужную функциональность, добавив нужную. Библиотека получилась 100к (с включенным datePicker.js, в который лезть не пришлось, поскольку он нормально работал, но весит 30к, цуко).

                                                                                        Мораль такова: не надо переписывать с нуля библиотеку jQuery, изобретать язык программирования в замену php, ruby, java, не надо делать очень многих вещей, но нельзя и всё-всё-всё перекладывать на посторонний код. Окошки, табы, загрузчики списков, гриды, постраничный вывод, панель действий, эмулятор mdi-интерфейса - всё это легко и просто пишется руками. Проще, быстрее, надежнее.
                                                                                          0
                                                                                          >> не надо делать очень многих вещей, но нельзя и всё-всё-всё перекладывать на посторонний код.
                                                                                          А никто и не собирает проект их готовых кусочков или вы думаете, что из перечисленных мной плагинов можно собрать полноценное приложение? Да они составят меньше процента всего кода. Но вместо того, чтобы тратить на эти крохи день-два, реализовав самому, я потрачу полчаса, используя готовые.

                                                                                          >> Проще, быстрее, надежнее.
                                                                                          Кое-как можно согласиться со вторым? Действительно, своё частное решение скорее всего будет быстрее, но в остальном...
                                                                                          0
                                                                                          >> Очень часто на хабре встречаю топики или комментарии
                                                                                          >> любителей изобретать велосипед.

                                                                                          Так следуя вашей логике, зачем вобще нужно что-то писать? Взять Друпал, поставить на него бесплатный шаблон и называть это дерьмо сайтом.
                                                                                            –1
                                                                                            Читай внимательнее.
                                                                                              0
                                                                                              я умею читать. в своем примере я утрировал, естественно, если ты не понимаешь.
                                                                                              до появления РоР сайты на Руби писали и без фреймворков (правда, в основном, в японии).
                                                                                              Ну ты, допустим, напишешь корявый "велосипед", а кто-то другой напишет неплохой новый фреймворк. Не забывай, что среди "изобретателей" есть очень способные программисты, которым просто не хватает/не устраивает функционал имеющегося фреймворка.
                                                                                              А так ты очень весело начал топик в стиле "есть лохи которые пытаются что-то свое написать" =)
                                                                                                0
                                                                                                "Очень часто на хабре встречаю топики или комментарии любителей изобретать велосипед." Или опять утрируешь?
                                                                                            0
                                                                                            Глупый спор помоему тут местами развелся:)
                                                                                            Нас объединяют две вещи:
                                                                                            1)непреодалимое желание создавать
                                                                                            2)непреодалимая лень
                                                                                            Т.о. мы всегда будем развиваться, чтобы избавиться от рутины. И так ли важен маршрут..

                                                                                            Только полноправные пользователи могут оставлять комментарии. Войдите, пожалуйста.

                                                                                            Самое читаемое