Ответы пользователя по тегу Дизайн
  • Можно-ли брать доп. плату за несоблюдение дэдлайна?

    gzhegow
    @gzhegow
    aka "ОбнимиБизнесмена"
    Я сейчас с тебя буду доплату брать за то, что ты бизнесом занимаешься, а не программированием. Ишь ты нео-бизнесмен какой пошел.
    Вежливо спроси что за дела, и откалибруй - врет или нет. Если врет - посылай. Если беда дома - помоги. Так работать надо. А не по-еврейски - побольше сэкономить на своих сотрудниках, чтобы побольше подарить ленивым клиентам.
    Ответ написан
    1 комментарий
  • Первые шаги в PHP, имет ли смысл начинать с MVC?

    gzhegow
    @gzhegow
    aka "ОбнимиБизнесмена"
    1. Официальный сайт. Ты буквально задаешь в гугле что тебе делать и он либо выдает тебе официальный сайт с описанием функции, либо ссылку на stackoverflow, где твой вопрос уже решен. Для подавляющего большинства вопросов работает, за это ПХП очень любим, что комьюнити не сидит где-то в далекой галактике, а оно тупо повсюду

    2. OpenCart сделан на MVC, если не обращать внимание на стандартный шаблон, который тут же рушит этот MVC к чертям. Очень многое в нем сделано "как-то потому что по-другому не получалось", но опенкартовский MVC многое делать не умеет из того, что хотелось бы, и честно говоря сам MVC в нем мог бы быть немного проще. База в нем годная больше-меньше, кроме непонятного хранения деревьев, с уровнем наоборот (так и не нашел причину). Основная проблема OC - жестко захардкоденные контроллеры - то есть при входе на такую-то страницу ты получаешь вот этот файл с версткой. Поэтому Опенкарт годится для шаблонных магазинов, чтобы учится на нем - только самые самые азы можно познать, а потом плеваться начнешь.

    3. Да, лучше использовать ваш, в пхп ежедневно пытаются найти правильный стиль, и частенько уходят в конструкции кода, забывая о том, что нужно быстро решить задачу, а не понять, что есть такая штука как фасад, провайдер и еще 92 паттерна из большой книжки. Поэтому то что комьюнити повсюду - это также самый большой минус ПХП, каждый уверен что его стиль кода его крупной компании самый лучший - одни кричат возьми готовое, но это готовое чтобы использовать нужно иметь огромный мозг, потому что без литра непонятно зачем там СТОЛЬКО ВСЕГО. Другие считают что можно написать все в простых файликах действиях, сделав их длинной в 3000 строк, но со временем задалбываются это дебажить и переходят на какую-то систему написания кода, которая подсказывает и делает многое за человека, но ее даже чтобы настроить нужен МОЗГ и 4-часовой видеоролик. Некоторые забивают и пишут говнокодом, потому что им не платят за придумывание, а платят только чтобы работало, так что перед тем как принять что-то как данность я бы рекомендовал найти хотя бы еще одного человека, который не будет кидать понты и отсылать почитать - а реально обьяснит тебе зачем эта штука применяется. Тогда да, делаешь осознанно.

    4. Есть PHP Storm ы разные там, она там столько всего умеет, что можно скурить не один килограмм сигарет, пока во всем разберешься. Вопрос, нужен ли тебе суперкомпьютер, если космическим кораблем мог бы управлять даже смартфон, а главное чтобы он был надежным? Ну сам решай.

    5.1 Дримвьювер, муза и тд точно не выход. Верстки приходится писать столько, что со временем хочется чтобы любая система написания кода грузилась мгновенно, а не проходило там 10 минут инициализацию и тд Поэтому этап один - поставить плагин Emmet и в течение дня целый день изучать верстку сразу пытаясь использовать его, через день будет отскакивать и ты уже не сможешь писать просто верстку. Для отсаженных существует JADE, который позволяет вообще не использовать знаки больше и меньше, а код пишется в питон-стиле - вместо скобок отступы. Говорят это чертовски удобно, чтобы не нужно было постоянно код ровнять под линеечку - если заровняешь неправильно - оно тупо не заработает. Но я пока не перешел на jade, времени все никак

    5.2 Да, хорошая штука MVC, но не совсем такой как в опенкарт. Действительно куда более прикольный шаблон приложения предлагает яваскриптовый ExpressJS сервер. Запрос, тип ответа, тело, получили данные, обработали, ответ, ушло. = Там все на двух классах request и response, функционал минимальный и необходимый. Но это скорее потому, что яваскрипт очень прикольная хрень с его замыканиями и анонимайзером всего и вся что в голову придет.

    6. Если у тебя магаз шаблонный без доработок - смело бери опенкарт, условие дизайнеру - делай все ТОЧНО ТАКЖЕ КАК ЗДЕСЬ но в стиле нашей компании. И тогда ты особо не лазая в код - натянешь шаблон в чисто верстке. Но стоит тебе задаться целью сжать скрипты, добавить какие-то страницы, изменить где-то логику - ты сядешь с опенкартом. Он приколен в плане - добавить что-то уже существующее, но добавить что-то свое - это вешайся. Что до скрипта магазина - хороший и быстрый адаптированный под доработку таки делают с нуля. Данные хранят в любой структуре, подключают поисковой движок (суть которого проиндексировать данные под твой запрос, а потом тебе выдавать уже готовый индекс оч быстро), подключают скрипт корзины написанный на JS, с бэкендом через ajax запросы (не пугайся умных слов, на самом деле это просто название, на деле просто в реально времени сайт делает запросы другим пхп скриптам не перезагружая страницу, чтобы обновить количество товаров например или их стоимость), а страницы делаются простым "если адрес такой - то вот этот скрипт подключить и вот эти данные в него запихнуть по-умолчанию. Все остальное - для удобства.
    Ответ написан
    Комментировать
  • Как создать адаптивный дизайн?

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

    Это работает либо инлайн-блоками, либо флоатами.
    Если инлайн-блоки - нужно родительскому элементу постоянно занулять размер шрифта. А в колонке возвращать его обратно. Плюсы - можно выровнять колонки по центру если нужно (редко нужно на самом деле, чаще создают второй контейнер с отступами).
    Если флоатами - вешать на родительский элемент 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 комментарий
  • Какие иконки используете вы?

    gzhegow
    @gzhegow
    aka "ОбнимиБизнесмена"
    fontello
    Ответ написан
    Комментировать