• На какой бесплатной CMS можно оперативно сделать лёгкий сайт?

    Sanes
    @Sanes
    Вам как раз Modx нужен.
    При таком наборе функциональных разделов, интеграция HTML верстки займет пару часов.
    Заодно код будет чистый и прозрачный. Без всяких грязных хаков.
    Ответ написан
  • На чем посоветуете делать сайт горсовета?

    ThunderCat
    @ThunderCat
    {PHP, MySql, HTML, JS, CSS} developer
    Ну, в нашем царстве все гос сайты пишут на друпале, как ни странно. Он прост как цмс, он модульный и пахнет елкой основан (частично) на симфони 2, то есть почти чистый мвц (подробнее тут). Если ничего не нужно допиливать - готовая цмс - только настроить и картинки поменять. Если что-то допиливать - разработчиков симфонии много, ну, в смысле они есть.
    Если все же катать что-то совершенно особенное и свое - ларавел как самый низкий по порогу вхождения, соответственно не очень дорогой в разработке.
    Ответ написан
    7 комментариев
  • Хорошая и удобная cms для разработки, глазами разработчика?

    Sanes
    @Sanes
    Что разрабатывать собрались?
    В большинстве случаях подойдет Modx. Малое кол-во компонентов компенсируется их качеством и универсальностью.
    Ответ написан
    4 комментария
  • Как создать адаптивный дизайн?

    gzhegow
    @gzhegow
    Думал, стану умнее, когда адаптируюсь, но нет
    Смысл адаптивного дизайна - в медиа-запросах
    Поскольку устройств десятки - писать для каждого класса адаптивный дизайн - это пустая работа, потому что стили будут в большинстве своем одинаковые.
    В связи с этим придумали - колоночный дизайн, который заранее задает стили для т.н. колонок, которые выстраиваются в строку - если место есть, и в столбик, если места нет.

    Это работает либо инлайн-блоками, либо флоатами.
    Если инлайн-блоки - нужно родительскому элементу постоянно занулять размер шрифта. А в колонке возвращать его обратно. Плюсы - можно выровнять колонки по центру если нужно (редко нужно на самом деле, чаще создают второй контейнер с отступами).
    Если флоатами - вешать на родительский элемент clearfix. Ну и разумеется выравнивание по центру САМИХ КОЛОНОК будет недоступно. Кроме того - работа с float: left; весьма специфична по наследованию максимальной высоты, например, когда вы хотите сделать форму для ввода в которой в одной колонке находится лейбл, а в другой поле, при этом форма должна выглядеть ровно - вы задаете строке min-height: 30px например, а потом попытка сеткой унаследовать этот min-height: сломает вашу сетку к чертям.

    Короче, используйте inline-block;

    Смысл сетки в целом вот такой: ты задаешь максимальное количество колонок в строке, а потом размер конкретной колонки относительно максимального для конкретного устройства. Все классы заранее прописываются в медиазапросах, проще всего для этого использовать какой-нибудь SASS или Stylus (главное чтобы были циклы)

    >> БЭМ
    .grid.grid_size_12
      .grid_col.grid__col_size_2.grid__col_size_4mobile


    Вышеуказанный код работает примерно так - по-умолчанию в строке помещается 12х, внутри находится колонка которая по умолчанию занимает 2/12 = 1/6 экрана, на мобильном 4/12 - 1/3 экрана по ширине.

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

    Напишите свою сетку, это не так сложно, а потом вы сможете задавать отступы колонкам примерно в таком виде
    .grid {
      display: block;
      font-size: 0;
      box-sizing: border-box;
      min-height: inherit;
      max-height: inherit;
      height: 100%;
    }
    
    /* здесь не нужна вложенность, на класс будут навешиваться другие классы */
    /* мы указываем "начинается с класса", чтобы каждый раз не писать .grid__col.grid__col_size_2 а просто писать grid__col2 например */
    [class^="grid__col"] {
      display: inline-block;
      vertical-align: top;
      font-size: 1rem; /* постоянно следите за этим размером шрифта, он еще не один раз напомнит о себе */
      box-sizing: inherit;
      height: 100%;
      min-height: inherit;
      max-height: inherit;
    }
    
    /* циклы */
    .grid_col_size_12 .grid__col_size_12 {
      width: 100%;
    }
    .grid_col_size_12 .grid__col_size_6 {
      width: 50%;
    }
    /* и т.д. */
    
    .grid_project_foo {
      margin: 0 -8px -16px;
    }
    
    .grid_project_foo .grid__col {
      padding: 0 8px;
      margin-bottom: 16px;
    }


    Что обеспечит вам отступ между колонками в 16 пикселов по горизонтали без отступов крайних колонок, а также отступ после того как они соберутся в столбик по вертикали тоже 16 пикселов, не включая последнюю строку (она будет сожрана отрицательным маргином).

    P.S.
    Только что проверил колонки с float: left. Их ломает min-height - они перестают влазить по ширине, а если убрать min-height: - не будет работать выравнивание по высоте. А причина в том, что отрицательный маргин ломает все флоаты к чертям. Так что да, единственный нормальный вариант это inline-block.

    Если вам нужно раскрасить колонки - используйте table, table-cell, которое на мобильных устройствах (после перестраивания в столбик) превратится в block, inline-block.
    Ответ написан
    1 комментарий
  • Как не засыпать при чтении?

    По сути чтиво может быть разным. Если вы спросили это тут то, полагаю, речь идет о профессиональной литературе. Тут все просто, но ни кто толком не хочет разбираться. Варианта два
    • Вы действительно недосыпаете
    • Причина в мозге. При весе 2% от всей массы тела, мозг в "рабочем режиме" потребляет 30% энергии организма. Это инстинктивно не выгодно для организма (контролируется "старая кора"). Неокортекс (контролирует realtime) хочет прочесть книгу и понять, все содержимое. Возникает конфликт. Старая кора берет свое, так как она более могущественная в мире мозга, ибо имеется у нас с начала проявления мозга как органа. Следовательно, надо перебороть старую кору. Больше причин и вдохновения для чтения. Больше белков и витаминов. А непосредственно перед чтением больше сладкого. Сахар - один из самых простых источников молекул АТФ - энергетические молекулы в которых хранится запас энергии нейронов. Так же не надо забывать про важность сна. Химические реакции, проходящие в мозге, выделяют продукты жизнедеятельности нейронов которые, как не странно, выводятся из области головы только во время сна. В общем, пункт 1 выполнять в любом случае)

    Ответ написан
    3 комментария
  • В чем суть роутера на php?

    onqu
    @onqu
    weasy
    1. Здесь пугают всякими контроллерами, ларавелями. Давайте жить проще. Для начала дадим определение модному слову роутер. Это маршрутизатор. Что делает маршрутизатор? Правильно. Обрабатывает маршруты, являясь связующим звеном. Маршрутом для web сайта принято считать метод запроса [GET, POST, PUT и другие] и компоненты URI.

    например: https://ru.wikipedia.org/wiki/URI?foo=bar#title
    [схема: https] :// [источник: ru.wikipedia.org] [путь: /wiki/URI] [запрос: ?foo=bar] [фрагмент: #title]


    Но для определения маршрута может браться любая другая информация передаваемая серверу, определение выше это лишь наиболее употребляемые параметры.

    Сама работа, как правило проста: от клиента приходит запрос, маршрутизатор перебирает все заданные ему пути до первого совпадения. При совпадении вызывается определенная вами функция, которая возвращает ответ клиенту.

    2. Он необходим, если в приложении одна точка входа, когда любой запрос приходит на один файл.

    3. Простой пример
    // файл index.php
    
    // Маршруты
    // [маршрут => функция которая будет вызвана]
    $routes = [
        // срабатывает при вызове корня или /index.php
        '/' => 'hello',
        // срабатывает при вызове /about или /index.php/about
        '/about' => 'about',
        // динамические страницы
        '/page' => 'page'
    ];
    
    // возвращает путь запроса
    // вырезает index.php из пути
    function getRequestPath() {
        $path = parse_url($_SERVER['REQUEST_URI'], PHP_URL_PATH);
    
        return '/' . ltrim(str_replace('index.php', '', $path), '/');
    }
    
    // наш роутер, в который передаются маршруты и запрашиваемый путь
    // возвращает функцию если маршшрут совпал с путем
    // иначе возвращает функцию notFound
    function getMethod(array $routes, $path) {
        // перебор всех маршрутов
        foreach ($routes as $route => $method) {
            // если маршрут сопадает с путем, возвращаем функцию
            if ($path === $route) {
                return $method;
            }
        }
    
        return 'notFound';
    }
    
    // функция для корня
    function hello() {
        return 'Hello, world!';
    }
    
    // функция для страницы "/about"
    function about() {
        return 'About us.';
    }
    
    // чуть более сложный пример
    // функция отобразит страницу только если
    // в запросе приходит id и этот id равен
    // 33 или 54
    // [/page?id=33]
    function page() {
    
        $pages = [
            33 => 'Сага о хомячках',
            54 => 'Мыши в тумане'
        ];
    
        if (isset($_GET['id']) && isset($pages[$_GET['id']])) {
            return $pages[$_GET['id']];
        }
    
        return notFound();
    }
    
    // метод, который отдает заголовок и содержание для маршрутов,
    // которые не существуют
    function notFound() {
        header("HTTP/1.0 404 Not Found");
    
        return 'Нет такой страницы';
    }
    
    
    // Роутер
    // получаем путь запроса
    $path = getRequestPath();
    // получаем функцию обработчик
    $method = getMethod($routes, $path);
    // отдаем данные клиенту
    echo $method();


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

    4. Обойтись без него можно. Если каждая страница в вашем приложении будет являться отдельным файлом, который отвечает за отдачу информации.
    index.php
    about.php
    contact.php
    ...


    Это олдскульная структура, в новых проектах почти не применяется.
    Ответ написан
    13 комментариев
  • Какое идеально оно - ТЗ для веб-дизайнера, веб-верстальщика, программиста?

    @bogomazov_vadim
    1. Пример шаблона ТЗ на верстку, можно подогнать под себя.
    2. Чеклист на верстку.
    Ответ написан
    Комментировать
  • Зачем продолжают изучать Corel draw? Он ещё жив?

    globuzer
    @globuzer
    gezgrouvingus progreszive ombusgrander greyderzux
    Corel Draw в отличие того же самого Adobe Illustrator позволяет создавать баннеры большого размера (исчисляемого в метрах). Поэтому при создании подобных артефактов приходится пользоваться и коррелом и иллюстратором, перегоняя файл туда и обратно, шаманя с масштабами и размерами, чтобы получить приемлемы продукт на выходе для печати.
    Ответ написан
    2 комментария
  • Тенденция к перехвату проектов/клиентов сотрудниками с последующим увольнением. Что делать?

    @Das_original
    Всё очень просто. Уходят - потому что условия лучше.
    Я был по обе стороны баррикад.
    1) Уходил, попутно забирая клиентов - Причина очень проста. Мне не платили девять месяцев. 9 месяцев по 1500$, мне нужно было каждый божий день обслуживать 10 клиентов в разных частях города. Без денег на обслуживание мой личный транспорт сообщил, что без капитального ремонта никуда не поеду. По поводу оплаты труда, директор всё время кормил завтраками, ныл что нет денег, хотя клиентов находил я, обрабатывал, продавал услуги, внедрял и поддерживал. Отсюда вывод - послать директора, забрать клиентов, получать профит.
    2) Я директор. В первую очередь, пока работал один, создал условия:
    а) Снял большой офис
    б) Поднял тестовый полигон
    в) Устроил комнату отдыха
    г) Проработал систему вознаграждения сотрудников
    д) Нанял юристов, для разработки договоров с Клиентами/Сотрудниками

    За 1.5 года существования компании, задержал заработок всего один раз (но на 2 недели).
    Итог: Потерял 2х сотрудников из 11, потерял 1го клиента.

    Так что вывод. Нет задержек в оплате - нет потерь.
    Ответ написан
    1 комментарий
  • Какую бесплатную cms/фреймворк использовать для интернет-магазина?

    Sanes
    @Sanes
    Modx+Minishop2 например. Но я предпочитаю Cs-Cart, есть вполне годная бесплатна версия. Про OpenCart даже не знаю, что сказать, тоже пойдёт наверное. А так же есть монстр Magento.
    Ответ написан
    Комментировать