Задать вопрос
  • Как определить, что touchstart и touchend прошел на том же елементе?

    Keyten
    @Keyten
    var tmp;
    
    function onTouchStart(e){
     tmp = e.target;
    }
    
    function onTouchEnd(e){
     if( e.target == tmp ){
      // выполняем: touchstart и touchend на одном и том же элементе
     }
    }
    
    Ответ написан
    3 комментария
  • CMS своими руками

    @egorinsk
    Автор, а что гуглить. Есть минимум 3 способа: расковырять простую Open-Source CMS (проблема: найти CMS с хорошей архитектурой и аккуратным кодом), устроиться в компанию, у которой есть своя CMS (а она есть почти у каждой студии), и наконец, написать самому правильно.

    Маны нужны не по написанию CMS, а по используемым продуктам и технологиям.

    Сначала надо определиться с задачей. Установите и попользуйтесь несколькими CMS, просто чтобы увидеть особенности их работы. (если вы не можете это сделать — вам надо изучать основы установки и настройки apache/mysql/whatever, а не CMS писать. Уходите практиковать эти навыки). Также, есть хороший сайт, где установлены демки десятков CMS и можно их посмотреть, не устанавливая.

    Запишите, что вы хотите получить, сделайте наброски страниц. Определитесь с требованиями к вашей CMS. Какие в ней будут модули, как ими можно управлять.

    CMS обычно состоит из 2 частей — т.н. «админки» (запароленный раздел, где меняется конфигурация сайта, добавляются материалы) и публичной части сайта, которую видят пользователи.

    Если вы еще не бросили эту затею, перейдем к следующему пункту. Проектирование архитектуры и написание CMS. Чтобы хорошо писать сложную CMS, нужен опыт и понимание того, как вообще писать сложные программы. Нужно глубокое знание HTTP/HTML/CSS/JS/SQL. А именно:

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

    Что еще надо знать. Во-первых, надо иметь представление что значит MVC или 3-звенная архитектура.

    M в MVC — это Model. CMS скорее всего будет хранить данные в БД — надо знать, что такое и как пишется DBAL (гуглите: PDO), плейсхолдеры в запросах, возможно, Table Gateway, ознакомиться с тем, что такое ORM, и почему PHP-ные ORM так тормозят. Если будете делать модельки, не храните значения полей в публичных свойствах — это неудобно и нарушает инкапсуляцию. Храните их в приватном массиве $attributes.

    V is for View. Надо знать, что такое шаблонизаторы (прочтите мануал по Smarty, Django Templates, HAML и XSLT, чтобы иметь общее представление, какие они бывают). Для PHP хорошие варианты — использовать чистый PHP или XSLT, если осилите. Smarty — устаревший тормозной хлам, Twig тоже имеет недостатки. И не стоит ставить шаблонизатор, только, чтобы писать {$a} вместо [?= $a =].

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

    C — контроллеры. Но это самая простая часть, контроллер — это просто класс с методами типа viewAction(), editAction() и роутер, который смотрит на УРЛ и вызывает нужный контроллер. Посмотрите, как устроен Zend_Controller и Zend_Front_Contriller, и сделайте так же, но попроще. выкинув 90% функционала — он вам не понадобится.

    Нужно как-то сделать систему компонентной без сильных связей: чтобы ядро могло работать и без модулей, а добавление модуля не требовало дописывания кода в ядро. Почитайте про Dependency Injection, а также Observer (observer — это когда мы делаем функцию addEventListener()).

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

    Что еще. Освоив все эти понятия, у вас в принципе не будет сложностей написать CMS, но почитайте еще мои советы по тому, как писать правильный код с исп. ООП: habrahabr.ru/qa/17158/#answer_70869

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

    Ну что еще. Если (в чем я сильно сомневаюсь) благодаря моему скромного совету вы все же сможете пройти этот нелегкий путь и станете успешным разработчиком, можете заплатить мне денег. Я не против.
    Ответ написан
    Комментировать
  • CMS своими руками

    Сделайте несколько сайтов на разных популярных CMS: Joomla, MODX, Drupal,… Напишите для них по модулю/компоненту.

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

    Что касается работы над CMS, я бы посоветовал взять за основу какой-нибудь фреймворк. Сейчас, я бы взял Zend, так как он написан академически правильно, но в то же время он довольно сложный для восприятия новичкам. Из попроще, вроде бы, Yii сейчас в моде.

    А дальше, навесьте на фрейморк все лучше, что вы вы видели в каждой CMS или даже придумайте новое решение конкретной задачи. Как-то так делал я.

    Вообще, написание CMS — это для «тру» велосипедистов. Нужно смотреть правде в глаза: вряд ли у вас получится что-нибудь ценное, но это поможет вам разобраться в тонкостях проектирования модульной системы, предметной области CMS, надеюсь, ООП, паттерне MVC и шаблонизаторах, а также вы получите бесценный опыт разработки огромного и сложного проекта.

    В общем, лично мой уровень после написания такого велосипеда за год взлетел с что-то могу написать с нуля, до я могу все и спокойно без опыта работы даже с Зендом и чтения мануалов пишу на Magenta, который вот совсем недавно казался китайской грамотой.
    Ответ написан
    Комментировать
  • CMS своими руками

    Tsyganov_Ivan
    @Tsyganov_Ivan
    Конкретное руководство «Пишем CMS. Для начинающих.» вы вряд ли найдете.
    Пишите различные веб-приложения. Наращивайте их функционал. Постепенно вы заметите, какие недостатки есть в ваших разработках, а какие моменты получились удачно. Просто сесть и написать хорошую CMS с нуля практически невозможно.
    CMS это сложное веб-приложение. Важно задолго до начала разработки продумать архитектуру всей системы.
    Решите, чего вы хотите от собственной CMS, чего вам не хватает в существующих. Сравните готовые решения. Попробуйте разрабатывать модули для существующих CMS, это позволит глубже разобраться в их архитектуре.
    Ответ написан
    Комментировать
  • CMS своими руками

    Sky4eg
    @Sky4eg
    Web разработчик
    Скорее всего ваши велосипед будет с квадратными колесами, без седушки и прочее. Но практически каждому программисту на php хочется написать такое на первых парах. Маны по написанию cms встречал неоднократно, однако лучше их не читать. Познакомьтесь лучше с паттернами программирования, почитайте 37signals чтобы не ездить на бульдозере за хлебом. Обязательно поймите что такое MVC, иначе у вас будет каша в коде. Попытайтесь разобраться в коде фреймворков или готовых цмс. А еще лучше забейте на эту идею и если всетаки вас так тяянет к цмсстроению, то найдите готовую цмс, разберитесь в ней и помогайте совершенствовать ее, писать плагины и прочее.
    Ответ написан
    2 комментария
  • CMS своими руками

    @slookin
    полезнее скачать пару-тройку готовых open source и разобраться почему они именно так написаны.
    Ответ написан
    Комментировать
  • git push problem - Everything is up to date but push failed - non fast forward

    @defuz
    git push -f origin development2.2

    -f == forced
    Ответ написан
    Комментировать
  • Замена Kinobaza.tv

    @Andoryu
    грусть (
    хороший проект.
    Ответ написан
    Комментировать
  • Google Chrome → HTTPS → Gmail — проблемы с SSL?

    burdakovd
    @burdakovd
    В данном случае это из-за картинок.
    Письмо ссылается на картинки по http, не по https.
    Злоумышленник, сидящий на проводе и перехватывающий ваш трафик, может подсмотреть и подменить эти картинки, и браузер этого не заметит. При этом несанкционированно изменится внешний вид страницы. Собственно это вам браузер и написал в своём предупреждении.

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

    Решение: не отображать картинки.

    Или отображать картинки, игнорировать серый цвет, но тогда вы рискуете в следующем сценарии: если вдруг gmail (по ошибке) начнёт передавать CSS по голому http (вы этого не заметите, т.к. иконка уже была серая из-за картинок), злоумышленник сможет воспользоваться этим, изменить внешний вид управляющих и информационных элементов интерфейса и заставить вас выполнить с почтой определенные действия.
    Ответ написан
    1 комментарий
  • Twig vs Smarty

    taliban
    @taliban
    php программист
    Мы долго работали со смарти, с дву и еще некими смартиподобными, так как было время когда смарти не развивалось, и мы пытались найти альтернативу. Потом Сделали пару проектов без шаблонизатора вообще, на этом и остановились. Если правильно подойти к этому делу, то, использование пхп как шаблонизатора, это не так уж и затратно, а где-то даже и удобно.
    Ответ написан
    Комментировать