Web-технологии глазами С++ программиста

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

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

    Надеюсь будет интересно Web разработчикам посмотреть на потуги С++ника, ну а С++ разработчикам узнать для себя что-то новое.



    Выбор server-side инструментов


    Находясь в твердой уверенности что не стоит забивать гвозди С++ом, основным языком разработки был выбран PHP. Остальные языки проиграли сравнения по поддерживаемости, количеству статей и мануалов, популярности.
    ... а если по чесноку?
    Один знакомый давным давно сказал что «PHP учится за день!». Именно эта лёгкость и стала основным фактором выбора.

    Операционной системой для разработки была выбрана Ubuntu 14.04, базой данных PostgreSQL.
    ... а что не MySQL?
    Моё знакомство с MySQL всегда довольно быстро заканчивалось полным сносом MySQL и установкой чего бы то ни было другого. Причин для этого более чем достаточно:
    • MySQL плохо поддерживает SQL, а то что не поддерживает, в тихую игнорирует (например references в create table)
    • MySQL был медленным до патчей от Oracle
    • после патчей от Oracle MySQL вызывает у меня страх, как любой продукт Oracle. Продукты Oracle ломаются в моих руках в самый неподходящий момент. К примеру, однажды BerkeleyDB записала мусор в базу и в течении месяца не замечала этого, а после месяца работы база данных уже не подлежала восстановлению
    • MySQL ощутимо выигрывает у PostgreSQL только в скорости создания нового соединения с базой. Не кэшировать соединения — это дурной тон => преимуществ практически нет


    Веб сервером был выбран nginx. Возможности Apache были бы избыточны для достаточно простого проекта.
    ...а другие причины были?
    Интересно было попробовать новый инструмент nginx, о котором полно положительных отзывов.


    Первое разочарование


    Поставив PHP-fpm и написав «Hello world!» я уж было обрадовался что всё хорошо движется, но тут на глаза попалась статья про тест на проникновение. Из статьи стало понятно, что конфигурация PHP по умолчанию опасна! После чего на настройку PHP ушел день… а через месяц ещё два дня. Твёрдой уверенности в том, что все хорошо, нет до сих пор!

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

    Client-side инструменты


    После сомнительной борьбы с конфигурацией решено было отдохнуть и прикинуть как должна выглядеть страница. Осведомлённый о Bootstrap, я нашел пару шаблонов страниц на нём с не поломанным адаптивным дизайном, выбрал по симпатичнее и начал подгонять под проект.

    CSS


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

    В итоге выработался следующий механизм работы с дизайном:
    • менять в основном только иконки и картинки
    • по возможности обходиться имеющимися стилями
    • добавлять красочности через javascript анимацию
    • в крайнем случае минимально править CSS, сохраняя оригинал


    Bootstrap

    Bootstrap для CSS — это как Boost для C++. Сложно представить сколько усилий уходит если его не использовать. Моего ничтожного на тот момент знания CSS было более чем достаточно, чтобы начать им пользоваться, подгонять под себя и даже сделать красивую менюшку вверху страницы.
    ...вот прям идеально подошло под нужды?
    Не совсем. Хотелось по наведени на меню выпадающего подменю. В Bootstrap не оказалось нужного функционала, но как выяснилось добавить его крайне легко:

    ul.nav li.dropdown:hover > ul.dropdown-menu {
        display: block;    
    }
    .navbar .dropdown-menu {
        margin-top: 0px;
    }
    


    Так же легко оказалось сделать шрифт побольше:
    /* Making menue font bigger*/
    .nav > li > a {
        font-size: 1.1em;
    }
    

    Так что я очень доволен Bootstrap!


    jQuery

    jQuery — это то, как на самом деле должен выглядеть javascript. Короткие имена функций, анимация, легкий доступ к элементам и итерация по ним, абстрагирование над браузер-специфичными вещами. Основы понимаются за 15 мин чтения документации.
    ...прям всё подошло идеально?
    Расстроило отсутствие часто используемых вещей:
    • работа с cookies (setCookie, getCookie)
    • более продвинутый класс строки был бы кстати (startsWith, isLetter)

    Пришлось сделать вспомогательный файл с javascript и вынести в него свои расширения.


    Разработка


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

    OAuth


    Самой большая проблемой оказалась авторизация пользователей. Решено было использовать сторонние сервисы для авторизации, как то Вконтакте, Твиттер, Фейсбук, Yandex, MailRu, Одноклассники.

    Внезапно оказалось, что все известные сервисы видят OAuth по своему. Различия не то чтобы совсем значительные, но из-за мелких деталей разработка превратилась в настоящий АД!
    • Яндекс единственный кто делает редиректы при OAuth
    • Одноклассники подсчитывают контрольные суммы не как все
    • MailRu подсчитывают контрольные суммы даже не так как Одноклассники
    • Google придирается к мелочам (что честно говоря мне понравилось)


    При этом у всех сервисов сообщения об ошибках абсолютно не информативные, а отладка PHP кода — отдельное удовольствие, о котором ниже. В добавок ответы от всех сервисов приходят в своём формате, никак не похожем на форматы других сервисов.
    ...а что с Твиттер не так?
    С Twitter абсолютно всё не так! Какие-то неадекватные ограничения на сессии, из-за чего пользоваться им могут 1-2 пользователя в день и то, если кликают редко. По превышении лимитов Twitter начинает вести себя как шизофреничка весной:
    • возвращает ОК, но не авторизует
    • не дает вернуться на предыдущую страницу из-за постоянных редиректов
    • ломает всю логику работы сайта за счет того что авторизация как бы ОК, но на самом деле не ОК и надо редиректить… А с переадресованной страницы невозможно вернуться из-за постоянного не выключаемого редиректа



    PHP

    С PHP всё достаточно неплохо — язык как язык. Правда после C++ было непривычно работать с интерпретируемым языком: ошибки что в С++ находятся на этапе компиляции в PHP находятся только на рантайме. Осознал что С++ — развращает, позволяя меньше времени уделять проверке на опечатки.
    ...что-то ты недоговариваешь!
    Ошибок было бы много меньше, если бы новые переменные создавались с помощью ключевого слова (к примеру var как в javascript, или auto как в C++11). Иначе любая опечатка в имени переменной становится новой переменной.


    В PHP напрягает отсутствие бесплатного отладчика, отсутствие бесплатной среды разработки.
    ...ведь купил и проблем не стало?
    Неа! Я жадный! Вспомнил юность с написанием программ в блокноте и отладкой через printf.


    Слайдшоу

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

    Поэтому решено было возложить красивое расположение текста на Booststrap, и просто скрывать куски текста и показывать по таймеру.

    Оптимизация

    Черновая версия одной из страниц весила несколько мегабайт. Грузилось до одурения долго. На помощь пришёл Pagespeed со своими советами.

    Но самую большую помощь оказал сайт TinyPNG, который используя чёрную магию и квантование ужимает картинки в несколько раз без потери качества.
    ...познал основы и считаешь себя крутым?
    Сначала я считал что открыл банальные вещи. Однако после того как я прошелся по ряду очень известных и популярных ресурсов с этими инструментами, выяснилось что мало кто заботится о размере. Да что там говорить, сам Google не так хорош как мог бы быть.


    Internet Explorer — няшка!

    Я абсолютно серьезен. Internet Explorer — великолепен! Конечно не как браузер для пользователя, а как средство отладки сайта. Конечно не как дебаггер и не инспектор стилей.

    Internet Explorer — отображает сайт практически без всяких CSS расширений, он очень требователен к разметке и невероятно долго грузит страницы. Это всё плюсы! На нём можно удостовериться что сайт быстро отображается, что в javascript случайно не закрались незакрытые теги. В конце концов можно увидеть как сайт выглядит в худшем случае, и что контент всё еще читаемый.
    ...серьёзно?
    Да.
    ...серьёзно-серьёзно?
    ДА.



    Итоги


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

    Only registered users can participate in poll. Log in, please.

    Насколько хорошо получился сайт

    • 29.3%Бездарно, не делай так больше298
    • 58.4%Неплохо для начала, прокомментирую ниже594
    • 12.2%Гениально! Не делай так больше, отнимаешь мой хлеб!125

    В сатью не влезло:

    • 32.7%SEO и реклама — напиши о впечатлениях197
    • 32.5%Хостинг и доменные имена — расскажи о них196
    • 66.6%Больше админства! Настройки PostgreSQL, nginx, iptables; использование sed/grep/ssh401
    • 46.5%Сайт принадлежит ООО. Что можешь сказать о бюрократии, счетах, налогах?280
    Share post

    Similar posts

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

    More
    Ads

    Comments 91

      +24
      >В PHP напрягает отсутствие бесплатного отладчика, отсутствие бесплатной среды разработки.
      NetBeans + XDebug, не?
        +8
        Спасибо тебе добрый человек!
          +2
          А ещё есть phpStorm от JetBrains. В связке с xDebug очень удобен: habrahabr.ru/post/209024/

          Правда, не бесплатный. Но и стоит недорого за то удобство, что даёт. И подсвечивает переменные, которые с опечатками, объявлены, но не используются и т.п., т.е. это не тупо блокнот с подсветкой, а достаточно умный «компаньон» при разработке, который подмечает потенциальные косяки.
          0
          Все бы ни чего, но вот сделать remote debug php на не своем хостинге это практически не реально.
            +32
            Завязывайте уже с shared хостингами.
            –5
            NetBeans Sublime Text 2
              –3
              Товарищи минусующие, может объясните чем NetBeans лучше Sublime Text в контексте скриптовых языков?
                0
                Я не из них, но подозреваю, что дело в том, что NetBeans это IDE, а Sublime — текстовый редактор
                  –2
                  Sublime Text может все тоже, что и NetBeans, при этом значительно проворнее, и не требует Java (для многих, включая автора статьи, это не маловажный фактор).
                    +1
                    Хм, может я многого о Sublime не знаю. Он умеет рефакторить код по проекту, работать с системами контроля версий, заливать код на удаленный сервер?
                      +2
                      По сравнению с IDE он ничего не умеет. Можно конечно потратить время, настроить много плагинов. Но полноценного качественного анализа кода и использования результатов оного для дополнения кода, рефакторинга и т.п. вещей настроить не получится. А при работе с большими проектами, без этого жить очень сложно.
              +10
              С точки зрения пользователя:
              — меняющийся фон в шапке — жесть, отвлекает и раздражает (хотя, имхо);
              — в меню не хватает пункта «О нас» — кто такие? где находитесь? как звонить?
              В качестве первого блина — не ком, вполне себе блин, слегка недожаренный :)
                0
                Очень интересно, а какую версию IE вы использовали для тестирования? *без сарказма*
                  +1
                  IE8. Он не поддерживает SVG — и это тоже плюс, так как сайт выводится с fallback картинками и видно где каких картинок не хватает.
                  +15
                  Было бы интересно прочитать обратный опыт:

                  Невероятно, но факт — веб-технолога унёс дракон! Кресты глазами глазами веб-технолога.
                    0
                    Я прошел данный путь))) 4 года пыха, сейчас плюсы и шарп — в пых не хочу возвращаться, но халтуры беру охотно.
                      +2
                      ходил туда и обратно)
                      везде интересно)
                      +6
                      Подтверждаю, Oauth2 — это ад.
                      Кто-то отдает токены через GET, кто-то через POST. Кто-то поддерживает CSRF, кто-то игнорирует, кто-то неприемлет.
                      Кто-то придумывает свои хэши для параметров (привет, одноклассники и mailru, которые требуют подписи всех запросов к апи).
                      Кому-то надо говорить, что окошко авторизации — попап, кому-то ни в коем случае нельзя.
                      Ну и наконец, кто-то возвращяет данные в json, а кто-то просто как ключ=значение.
                        +1
                        Ага. Я в свое время прикручивал к одному проекту авторизацию OAUTH. Заодно решил сделать простой инструмент для Perl, т.к. на тот момент не нашел альтернативы, которая бы позволила ее использовать с уверенностью. В итоге пришел к выводу, что если и делать такой модуль, то он должен быть не конечным инструментом, который делает все за владельца, а очень гибким. Т.е. позволять кастомизировать все общение под дебилизм OAuth сервера. Так появился metacpan.org/release/OAuth-Simple ((:
                          0
                          Да, я чувствую вашу боль, сам делал для google (oauth2), linkedin (oauth1 и oauth2), twitter (oauth1), facebook (oauth2), xing (oauth1). Каждый, с*ка придумавает что-то свое.
                            0
                            +9
                            Добавлю пару слов по дизайну и не только:

                            • text-align: justify; — бяка
                            • картинки в шапке плохого разрешения (на мониторе 1920*1080)
                            • | Войти | Регистрация — вроде 2 кнопки, а на самом деле одна. Да и вертикальная черта перед «Войти» — лишняя.
                            • top-me.org/adv_templates — не заставляйте скачивать ваши баннеры и писать src="/путь/до/банера/на/вашем/сервере.png", давайте адреса всех картинок которые уже загружены у вас, под каждым видом баннера выведите его код
                            • Зачем вам старый бутстрап? Испольуйте 3ю версию — он круче! Если хотите объема, просто подключите bootstrap-theme.min.css, который есть в дистрибутиве
                            • top-me.org/rating — на мой взгляд, модальные окна тут лишние, при таких конских плашках. На них, при минимальных усилиях, можно разместить всю нужную информацию и даже подсказки о типе обмена
                            • На главной — onclick=«jQuery.slideshow.reset(3)» в карусели — дурной тон, делайте через $('.class-name').on('click', function(event) {… });
                              + ваш способ будет проматывать страницу наверх из-за href="#", этого можно избежать через event.preventDefault()
                              + id=«slideshow-radio-3» — плохой способ, лучше делать через data-frame-id=«10» (замените frame-id на то, что вам нравится). Получать значение лучше всего через это $(this).data() (http://api.jquery.com/data/#data-html5) внутри обработчика события
                            • top-me.org/assets/js/login.min.js — писать кучу html-кода в js-файле — очень плохая идея :)

                            Извиняюсь, если не на все проблемы привел варианты решения, — у меня лень :(
                              0
                              Спасибо за замечания!

                              В виду своего малого опыта не знаю как исправить следующее:

                              > top-me.org/assets/js/login.min.js — писать кучу html-кода в js-файле — очень плохая идея :)

                              Я догадывался что это плохо, но не знаю как исправить. На каждую страницу лепить пачку вспомогательных скрытых div не хочется (шанс что потом буду что-либо править/менять и не везде исправлю). Отдельной страницей выносить модальные окна и подгружать эту страницу — сложновато и тоже не выглядит правильным.

                              > Зачем вам старый бутстрап? Испольуйте 3ю версию — он круче! Если хотите объема, просто подключите bootstrap-theme.min.css, который есть в дистрибутиве

                              Тут проблема в переносимости. Просто заменить старый на новый не получается, все ползет. Согласно этой статье и официальной документации, необходимо всё аккуратно менять ручками. Я попробовал, всё поползло и я решил не делать, так как не видел на тот момент преимуществ в новом Bootstrap по сравнению со старым. Возможно есть некий автоматический способ?

                                0
                                По первому вопросу — попробуйте mustache, его можно подгружать через ajax github.com/janl/mustache.js#load-external-templates. Я не берусь утверждать, что это лучший способ, уже пару лет практически не использую jQuery — сижу на AngularJS. Раньше вроде была популярная штука для этих целей. Надеюсь кто-то посоветует более модный способ (если он есть, конечно)

                                По второму — лично я все правил ручками в свое время, но автоматические способы уже точно есть, вроде даже на сайте бутстрапа были ссылки, но могу ошибаться. Гугл вам в помощь. Лучше сделать это сейчас, чем жалеть потом, когда сайт разрастется :)
                                  0
                                  Можно ещё препроцессоры типа Jade использовать и инклюдить повторяющиеся куски разметки. Правда это не спасает от избыточности кода на продакшене.
                                0
                                Мне больше хромовский инспектор кода нравится, там сразу можно подогать нужный стиль в рантайме, потом уже поправить в самом файле стиля
                                  +1
                                  Вместо работы индивидуально с каждым провайдером OAuth давно можно взять агрегатора — uLogin например.
                                  О MySQL вообще полная фигня написана, уж извините.
                                  Да, в jQuery нет работы со строками — но если вы возьмете что-то типа underscore.string то там будет такого добра просто завались.
                                  О Bootstrap-е — если бы взяли нормальную полную тему, там виджетов и контролов столько, что и за месяц не разгребсти, например — metronic или любую другу. В том числе и меню. И сразу типовые страницы сверстаны, к примеру.
                                    0
                                    > давно можно взять агрегатора — uLogin например

                                    Не знал о них, находил других агрегаторов. У всех были недостатки, в виде рекламы, засунутой в самые неприятные места. Да и uLogin наверное такой же:
                                    Компания имеет право на свое усмотрение размещать любую информацию рекламного характера в состав Данных, которые предоставляются и отображаются Продуктами.


                                    > если бы взяли нормальную полную тему

                                    Если знать об этих темах — проблем нет. Тут все равно что веб разработчику скажут написать сервер на C++: человек напишет, но наверняка наделает собственных велосипедов, не зная что в Qt, Boost, HPX есть готовые решения. Если буду делать еще сайт — обязательно возьму metronic, спасибо за наводку!
                                      +1
                                      Если не хочется агрегаторов, стоит поискать библиотеки для конкретных провайдеров. Про PHP не скажу, а в мире Ruby on Rails это библиотека OmniAuth и к ней уже есть плагины для всех провайдеров, которые скрывают всякие жуткие особенности и возвращают данные в более менее одинаковом виде. Искать по omniauth-провайдер, например omniauth-facebook, omniauth-google-oauth2 ну и даже omniauth-mailru. Я брал, подключал их за день (полдня из которых регистрировал приложения в соцсетях) и не знал бед. Логика обработки приходящих данных в приложении была почти одинаковой для всех.
                                        0
                                        Про чистый РНР не знаю, но для symfony2 (ИМХО идеальный framework для тех, кто пришёл с java или собирается на неё уходить) есть вот эта замечательная вещь — github.com/hwi/HWIOAuthBundle.
                                        0
                                        OAuth.io. Вот про них статья: habrahabr.ru/post/200812/
                                      +2
                                      При экране меньше 767px у вас появляется горизонтальная прокрутка из-за этого куска css в файле assets/css/coming-soon-style.min.css:

                                      @media (max-width: 767px) {
                                        body {
                                          padding-left: 0; 
                                          padding-right: 0; 
                                        }
                                      }
                                      
                                        +1
                                        Вы не представляете, сколько времени я искал этот баг! Я уж даже думал в Bootstrap поменять padding в паре мест, чтобы не было горизонтальной прокрутки. Огромное спасибо, теперь уже скоро исправлю!
                                          0
                                          А тут — top-me.org/rating — из-за
                                           .rating_table_row_info {
                                          white-space: nowrap;
                                          }
                                          


                                          PS. Зачем оно вам кстати? Ничего плохого не случится, если плашки будут немного разной высоты из-за количества строк.
                                            0
                                            Хотелось именно однообразия, чтобы объявления различались лишь картинкой+текстом и позицией в рейтинге.

                                            Если дизайн плашек одинаковый, то позиция в рейтинге становится более ценной — меньше других способов выделиться.
                                              0
                                              Ограничьте количество символов, которые можно указывать в описании. В таком виде как у вас сейчас — выводить их одной строкой не выйдет — оно не влезет никак. Пусть будет несколько строк — на больших экранах текст расползется на 2 строки, на маленьких — на 3-4. Все будут в равных условиях.

                                              Вижу, вы добавили overflow: hidden. В качестве относительно грязного хака, если хотите ограничиться использованием только css, добавьте:

                                              .rating_table_row_info p {
                                                text-overflow: ellipsis;
                                                overflow: hidden;
                                              }
                                              

                                              (overflow для .rating_table_row_info можно убрать)

                                              Ой, только сейчас заметил таблицы в плашках! Так не надо делать :) Используйте .row-fluid
                                        +1
                                        Из статьи стало понятно, что конфигурация PHP по умолчанию опасна! После чего на настройку PHP ушел день… а через месяц ещё два дня. Твёрдой уверенности в том, что все хорошо, нет до сих пор!
                                        А что именно поменяли? На какие данные, статьи опирались по этому поводу?
                                          0
                                          Всё не упомню. На вскидку это:
                                          * выставил open_basedir
                                          * добавил функций в disable_functions (искал по всему интернету, собрал список из нескольких статей)
                                          * урезал права сокету, по которому общаются nginx и php
                                          * новый пользователь и группа для php — дабы чётко разграничить права доступа к фалам для php и nginx
                                          * настройки file uploads

                                          С file uploads отдельная проблема, которая вроде как легко не решается — сначала файл загружается на сервер, а уже после этого выполняется php. То есть нет возможности отменить загрузку файла. Решал настройками nginx, получилось не особо. Может знаете способ лучше?
                                          +10
                                          Статья про веб от программиста на сях, и без всякой ненависти в сторону PHP… Удивительные вещи происходят!

                                          На мой субъективный взгляд, пользоваться трейсом (print_r, var_dump) в PHP выходило более продуктивней что ли. Всегда под рукой все переменные окружения, локальные и глобальные массивы, вывод вёрстки. Или я таки не умею правильно готовить дебаггер…
                                          Отладка клиентсайда, лучший выбор — божественный Firebug под Firefox, под него же есть и отладочные модули серверного кода — FirePHP.

                                          И да, я понимаю, что руки до фреймворков у вас вряд ли дойдут, но они скрывают в себе огромную уйму полезного, в том числе и коннекторы к социалочкам.
                                            +4
                                            Посмотрел на дизигн, с улыбкой заметил все те же недостатки, которые у самого бывают. Все же надо быть немножко дизайнером, чтобы делать что-то красиво. (Сам на C++ тоже пишу.)
                                            А теперь минусоприемник активирован: веб — один большой костыль, попытка реализовать с помощью языка разметки то, для чего должен использоваться полноценный язык программирования. Да, цветной текст на HTML — это хорошо, но попытка сваять полноценное приложение на языке разметки неминуемо ведет к использованию костылей типа JavaScript и CSS, вот тут то клоунада и начинается. Одна надежда на NaCl, но что-то не верится, что он приживется, слишком много нынче веб-программистов, прости Г-споди.
                                              –3
                                              Толстовато как-то.
                                                +1
                                                Все, у кого мнение отличается от вашего - тролли?


                                                Я высказал то что на самом деле думаю.
                                                  –1
                                                  Видимо до мысли «задачеориентированного» программирования вы не додумались пока? Вступление в холивар и разбор вашего крайне спорного утверждение по косточкам — есть тлен и не ведет к уменьшению энтропии.
                                                    +2
                                                    «Задачеориентированое программирование» — это такая метафора для ситуации когда кривость используемой технологии не нивелирует того факта, что вам все равно нужно кормит семью?
                                                      0
                                                      Тут ответ можно в целый пост развернуть. Если кратко — «да, вы правы». Нужно решить задачу. Это есть краеугольный камень жизнедеятельности разработчика или айтишника в целом. Ведь кормит меня не технология, а решенные с её помощью задачи. Столяра не кормит молоток, его кормит проданный стул, художника не кормит кисть — его кормит проданная картина. Надеюсь аналогия и мысль понятны в сумбурности моего изложения.
                                                      +1
                                                      Во-первых, вас никто не просил ничего расписывать.
                                                      Во-вторых, HTML был ориентирован на разноцветный текст, а костыли, которые пытаются к нему прикрутить, вместо того чтобы разработать нормальные инструменты — остаются костылями.
                                                        –4
                                                        Я правильно понял, что весь веб с его огромной кучей технологий, вы свели к одному HTML? Ну что же, похвально.
                                                          +1
                                                          Которые являются костылями, призванными добавить к HTML возможности, для которых он никогда не был предназначен. Похвально (с)
                                                  0
                                                  веб — один большой костыль, попытка реализовать с помощью языка разметки то, для чего должен использоваться полноценный язык программирования. Да, цветной текст на HTML — это хорошо, но попытка сваять полноценное приложение на языке разметки неминуемо ведет к использованию костылей типа JavaScript и CSS, вот тут то клоунада и начинается.


                                                  А я ожидал, что сам автор статьи будет развивать тему в подобном ключе.
                                                    0
                                                    Веб-сокеты?
                                                    –5
                                                    Мне одному кажется что такое обилие спойлеров только мешает чтению статей?
                                                      +1
                                                      Яндекс единственный кто делает редиректы при OAuth

                                                      Не упущу возможности поворчать на API Яндекс.Диска — для скачивания файла требуется до 3-х запросов!
                                                        0
                                                        >> Да что там говорить, сам Google не так хорош как мог бы быть.

                                                        А это потому, что нужно использовать правильные ссылки и будет 99/100. А для оставшихся замечаний, насколько я знаю, у Гугла есть причины делать именно так.
                                                          –1
                                                          VCL под веб — это реально?
                                                          Много попыток реализации, но что я видел это «поделки».
                                                          В Delphi, VS это работает. Помогает избежать написания фундаментального кода.
                                                            0
                                                            > Хотелось по наведени на меню выпадающего подменю. В Bootstrap не оказалось нужного функционала…
                                                            Не уверен, что вы хорошо искали, в Bootstrap есть данный функционал
                                                              +6
                                                              А вариант на C++ писать не рассматривали?
                                                                0
                                                                Первое предложение под картинкой с молотком говорит нам, что такой вариант рассматривался, но недолго
                                                                +1
                                                                *так, ворчание старичка*
                                                                Несколько лет назад, когда мир web-программирования еще не сформировался, а был лишь миром HTML, простого дизайна, фреймов, когда Flash был от Macromedia, а в мире серверов Code Red ещё не пошатнул позиции IIS, один студент подходил ко мне с вопросом, можно ли написать сайт на C++. И долго втирал мне про «самосервящиеся» сайты, термин его, но в душу запал. Позволю себе цитатку: «Ну смотрите, это когда сайт сам себе сервер, всё на плюсах, многопоточность для эффективного использования обоих процессоров сервера, самому управлять памятью, ресурсами, можно даже сетевым стеком. Ну это как самораспаковывающийся архив, только сервер и сайт в одном». Чем закончилась эта идея, я не в теме. Видел лишь его пробный самосервящийся Hello World, запущенный на одолженном у меня сервере под двумя Pentium II 450 Mhz. Сколько пользователей эта хрень держала и сколько памяти потребляла, история не сохранила. А вот зачин сей до сих пор вспоминается.
                                                                  0
                                                                  Возможно что вы говорите о чем-то наподобие Wt.

                                                                  Лет пять назад я пытался написать на нем что-то ради развлечения, даже коммитил оптимизации в сам проект. Из минусов — это жутко медленная скорость разработки приложения + неприятности с дизайном (так получалось что дизайн у меня очень сильно вшивался в С++ код). Плюсы: привычный язык разработки и быстрая обработка сложных вещей. Однако если у вас сайт с базой данных и обращается по сети во вне — то второй плюс сходит на нет.
                                                                  0
                                                                  Попробуйте в следующий раз на Node.js писать — очень интересно почитать будет что-нибудь в таком же ключе :)
                                                                    +2
                                                                    Имхо, в статье больше про верстку.
                                                                    Честно говоря, ожидал увидеть больше про «php глазами C++'ника».
                                                                      +2
                                                                      Что ж, смотрите

                                                                      Или вот такой вариант еще:

                                                                        0
                                                                        Напомнило… «С этой командой хипстеров вы не отмасштабируетесь, возьмите пару жиробасов знающих Си!» (цэ) откуда то из недр твиттера =)
                                                                        +1
                                                                        Что вы хотите, весь веб про вёрстку, так как сама логика вебприложений как правило тривиальная — получить данные из базы и переуложить или наоборот принять от клиента и отправить. Принимая во внимание, что современная разработка представляет из себя компоновку огромного количества готового кода или вовсе вписывание своей логики в какой-то scaffold, я думаю стоит ввести термин «верстальщик на php» или «верстальщик на python-е»
                                                                          –6
                                                                          А вот как раз C++ разработчика ничем испугать особо нельзя. Это всякие любители Haskell'я, Java, и Ruby охреневают от того, как такое можно было создать, а для программиста на C++ в нём ничего страшного нету.

                                                                          Если вы плотно работали на нормальных языках, исповедующим принцип fail fast — вот тогда вас от PHP будет мутить. Потому что только зная как устроены нормальные, не норовящие всё время выстрелить тебе в ногу, языки можно понять насколько ужасен PHP. Если же у вас опыт только C++ — то вам все эти жалобы будут просто непонятны.

                                                                          Ну да, в C++ есть компилятор, который простые синтаксические ошибки отлавливает сходу — но и всё, собственно. Если ваша ошибка чуть банальнее, чем описка в написании имени переменной, то часы и дни отладки вам обеспечены. В PHP — та же фигня, ну так и что? Ну да, чуть похуже язычок, чем C++, но и только. Зато экономится время на компиляцию (которой нет), так что не всё так плохо!
                                                                            0
                                                                            Много программ на Хаскеле? (Факториалы за программы не считаются.)
                                                                              –1
                                                                              А разве мало?
                                                                                +1
                                                                                Нет уж, вы не перекладывайте мой вопрос на меня же. Назовите хотя бы несколько с приличным количеством пользователей (GHC и IDE для хаскеля, написанная на хаскеле, забыл как называется, не в счет).
                                                                                  0
                                                                                  если я не ошибаюсь у МТС система USSD запросов на хаскелле (у кого то точно из большой тройки), это с приличным количеством пользователей?
                                                                                    +1
                                                                                    Ладно, чтобы не продолжать оффтоп, соглашусь, что 1 — это много.
                                                                                      0
                                                                                      Нет, я знаю многие проекты которые используют, там где это актуально и надо. На эрланге тоже сразу сходу я не могу назвать много проектов кроме erlyvideo. Однако то что на нем строят дофига, помоему глупо отрицать. Haskell присутствует и в хайлоад проектах и в высокочастотном трейдинге и еще много где. Смысл отрицать очевидно? реже ли он используется чем OCaml? или Lisp? я бы еще сравнил!
                                                                                        0
                                                                                        Да я понял уже, что примеров нет, но язык все равно очень популярный.
                                                                          +1
                                                                          Картинка фона на ретине выглядит плохо

                                                                          640x483 размеры картинки никуда не годятся
                                                                            –2
                                                                            Ну хоть свой фреймворк на C++ не стали писать, и на том спасибо :)
                                                                              +2
                                                                              А хорошо написано ведь, весело и информативно.
                                                                              Честное слово, первый раз в жизни захотелось на PHP поближе взглянуть.
                                                                                0
                                                                                Я смотрю на хабре достаточно много C++ программистов пишущих для веба.
                                                                                C++11 уже позволяет создать полноценный web фреймворк, но задача эта для одного человека неподъемная. Было бы хорошо как-то организоваться и сделать такую вещь.
                                                                                Лично у меня, когда мне приходится писать один и тот же код на C++ и PHP, то на C++ получается писать быстрее, код получается более организованным и сопровождать С++ код легче (при том что на php я пишу с 2006-го года). Про скорость исполнения я вообще молчу. Это не укор в сторону PHP. У PHP есть свои плюсы и минусы.
                                                                                  –1
                                                                                  Пока рефлексию не завезут, все останется на уровне метакомпиляторных костылей, либо еще более ужасных костылей с шаблонами, а значит и дергаться не стоит. Выйдет очередной CppCMS, вот и все. Хотя, конечно, рефлексия в том гипертрофированном виде, как она есть в том же Java Spring, это еще хуже, но все же совсем без нее никак, увы.
                                                                                    0
                                                                                    Не понимаю зачем нужна рефлексия для web-фреймворка? Вообще ни разу не сталкивался с задачами, в которых нельзя было бы обойтись без рефлексии. Поясните пожалуйста.
                                                                                      0
                                                                                      Полноценный сайт — это не только статичный контент, но еще и работа с базой, и вот тут без рефлексии начинается клоунада с шаблонами, в результате все равно получается неудобно и криво. Хотя, согласен, выразился я не очень точно, должен был уточнить.
                                                                                        0
                                                                                        Клоунада с шаблонами начинается если вы начинаете микроскопом гвозди забивать. Зачем вам SQL? Если у вас сайт на C++, то вы можете запросто сложить все данные в DBD или Redis какой-нибудь.

                                                                                        Да, это совсем не то, к чему привыкли web-разработчики, ну и что? Заменять PHP или C#/Java на C++ оставив всё вокруг в неизменности действительно глупо — у этих языков совсем разные подходу к «устройству мира».
                                                                                    0
                                                                                    Нормальные пацаны (Falcon) так и сделали! =)

                                                                                    А для переходя придумали Зефир!
                                                                                      0
                                                                                      Про Falcon я знаю. Это вообще не то. Я говорил про C++.
                                                                                      Если честно, то мне как C++ программисту гораздо приятнее иметь дело с PHP-CPP чем с Falcon — не люблю дебажить код на С.
                                                                                    0
                                                                                    Моё знакомство с MySQL всегда довольно быстро заканчивалось полным сносом MySQL

                                                                                    Как-то не так вы знакомились
                                                                                    Согласен с тем, что MySQL не идеален, но намного менее прожорлив постгреста
                                                                                    И для вашего проекта MySQL был бы более правильным выбором
                                                                                      +1
                                                                                      Ну под спойлер я вынес это не просто так — это моё субъективное мнение. Но в принципе моё мнение совпадает с выводами из статьи «PostgreSQL vs MySQL». Использование оперативной памяти в PostgreSQL регулируется через конфиги, так что тут различия можно свести к минимуму. В итоге при прочих равных, остаются те факторы, что под спойлером.
                                                                                      +2
                                                                                      > Из статьи стало понятно, что конфигурация PHP по умолчанию опасна!

                                                                                      Я просчитал указанную вами статью и ничего такого про опасность стандартной конфигурации PHP не нашел. В статье описана история взлома, которая началась с эксплуатации известной уязвимости старой версии форума phpBB. Не было бы устаревшего phpBB, не было бы и истории. Настройки интерпретатора PHP здесь ни при чем.
                                                                                        –1
                                                                                        Вот может будет: интересно.
                                                                                        В свое время google «порадовал» своим OAuth.
                                                                                          0
                                                                                          Понравилось как вы футер спустили вниз:
                                                                                          .margin-75px {
                                                                                              margin-top: 50px;
                                                                                          }
                                                                                          


                                                                                          В целом, статья отличная с долей комедии, текст под заголовком «Первое разочарование» очень порадовал :)
                                                                                          Конечно, имея доступ к веб-программисту, который бы Вас консультировал, Вы сэкономили бы много времени и нервных клеток. Неправильные решения создавали дополнительные проблемы. Кстати, я из статьи не понял, вы использовали jquery.cookie или нет?
                                                                                            +1
                                                                                            Понравилось как вы футер спустили вниз:
                                                                                            .margin-75px {
                                                                                                margin-top: 50px;
                                                                                            }
                                                                                            


                                                                                            В целом, статья отличная с долей комедии


                                                                                            Походу часть комедии просочилась в CSS :)

                                                                                            jquery.cookie не использовал (не знал о нем), написал свой простенький велосипед по ответам со Stack Overflow
                                                                                              0
                                                                                              Для jquery полно плагинов, которые делают вещи для всего, разве что кофе не варят )))
                                                                                            0
                                                                                            Хорошим тоном для слайдеров считается автоматически не переключать слайд если курсор находится поверх слайдера. Особенно это касается слайдеров в которых есть текст внутри. Замучился жать стрелку назад, перечитывая один слайд и пытаясь понять «о чем вообще этот сайт». А что если я просто хочу посмотреть на картинку в слайдере? Не поверхностно просмотреть, а вот именно изучить ее, такая-же ерунда.
                                                                                              0
                                                                                              В моём случае переход от С++ к веб технологиям заключился в поддержке блога на WordPress и форума на PhpBB. Когда же потребовалось за месяц освоить веб с нуля, то я был деморализован, и в общем то с задачей не справился.

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