• Как правильно спроектировать онлайн-магазин?

    dimonchik2013
    @dimonchik2013
    non progredi est regredi
    ловите скрин из админки работающего
    e58e3003e3cc4598a4f26f25ac030aaa.png

    достаточно киллер-фич?
    Ответ написан
    3 комментария
  • Как правильно спроектировать онлайн-магазин?

    qork
    @qork
    { background: #F00B42 }
    Отталкиваться от готовых, но более-менее ненагруженных решений вроде minishop, shopmodxbox и т.д.
    Ответ написан
    Комментировать
  • Как правильно спроектировать онлайн-магазин?

    nki
    @nki
    bezkart.ru готовая система лояльности
    Опишите ваш магазин в виде userstory от всех ролей, которые планируются в магазине. Таким образом, вы опишите функционал вашего магазина - его и реализовывайте.
    Ответ написан
    1 комментарий
  • ES 2015, Coffeescript или TypeScript? Что лучше и почему?

    Fesor
    @Fesor
    Full-stack developer (Symfony, Angular)
    ES2015. и babel, поскольку это стандарт (Chrome50 поддерживает его на 91%). Ну и да, можно использовать фичи из ES2016 вроде async/await для улучшения читабельности кода.

    TypeScript это ES2015 + ES2016 stage1 + опциональная возможность объявлять типы, благодаря которой появляется возможность проводить статический анализ на этапе сборки. Это очень выгодно для очень больших проектов (именно поэтому Angular2 написан на нем, это ооочень большой проект).

    CoffeScript на сегодня не актуален, возможно этот проект получит дальнейшее развитие.
    Ответ написан
  • Насколько удачен такой процесс разработки?

    Fesor
    @Fesor
    Full-stack developer (Symfony, Angular)
    в этом нет особо смысла. Никто не будет переписывать с кофескрипта на TS. Слишком дорого. Да и потом, сегодня прототип - завтра продакшен.

    Так ли важна статическая типизация, или это очередной меинстрим?

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

    Опять же в TS информация о типах - это бонус поверх ES6/ES7 state1 и только. Вы можете не прописывать типы. Да и для большинства кода типы можно вывести, достаточно определять все только для интерфейсов (публичная часть модуля считайте).
    Ответ написан
    3 комментария
  • Стоит ли сейчас учить TypeScript?

    @kondaurov
    Full stack developer
    Удивительно но что то никто не сказал что можно писать на typescript используя angular 1.x.
    typescript это тот же js только с аннотациями, типизацией, наследованием, интерфейсами а самое главное модулями. Без этих плюшек я уже и не знаю как можно делать надежные приложения. Жалею что время убивали с чистым js и coffee script.
    Вся функциональность что была раньше сейчас так же легко пишется на ts, ничем не жертвую, просто требует время покурить документацию.
    Можно использовать миксины (ака traits), смешивать классы и радоваться что нету копипаста кода, как сделать это на чем то другом я не знаю.

    Еще нужно будет разобраться с grunt (gulp), настроить таски на трансляцию ts в es5. Смотреть порядок загрузки файлов. Нужно потратить время еще и на это

    Есть куча статей про то как писать (правда все eng):
    https://gist.github.com/esfand/9569523
    www.codeproject.com/Articles/888764/Getting-starte...
    Ответ написан
    3 комментария
  • Стоит ли сейчас учить TypeScript?

    Fesor
    @Fesor
    Full-stack developer (Symfony, Angular)
    но вторая его версия пишется на TypeScrip


    Какая разница на чем его пишут, если вы можете писать на чем захотите.

    Давайте проясним. TypeScript это ES6/ES7-stage1 + информация о типах. То есть если вы знаете ES6/ES7-stage1 то вы автоматически знаете TypeScript (добавится только информация о типах и некоторые нюансы, но в целом они строго следует стандарту).

    То есть вот это валидный TypeScript:
    class Foo {
        bar = 'default property value';
    
        constructor(untypedArg) {
           this.foobar = untypedArg;
        }
    }


    Одновременно с тем что это валидный TypeScript код это так же валидный код с точки зрения ES (с учетом драфтов находящихся в stage1, вроде пропертей для объектов)

    Это не Dart, который является другим языком. Это надстройка над JS и не более, кроме возможности (опциальной) декларации типов - там ничего больше нет. Но зато для больших проектов эта информация позволяет избавиться от кучи багов.
    Ответ написан
  • Анимация в psd. Как передать верстальщику, и как должна выглядеть анимация?

    IonDen
    @IonDen
    JavaScript developer. IonDen.com
    Обычно рисуют отдельным слоем состояние :hovered (или любое другое). + комментарий, что переход должен быть анимирован. Дальше верстальщик должен сообразить.

    Если нужно что-то особенное, то можно дать ссылку например на https://daneden.github.io/animate.css/
    Ответ написан
    Комментировать
  • Как повысить навык проектирования хороших сайтов?

    despoth
    @despoth
    Продайте машину, квартиру, корову бабушки и т.п. Купите самый последний и самый навороченный Apple iMac 27" с Retina Display 5K. Купите подписку на весь Adobe Creative Cloud. Купите Sketch.app, и еще штук 20-30 приблуд и плагинов. Купите аккаунты на различных модных стоках типа shutterstock или istockphotos, запишитесь на сервисы envato и скупите как можно больше ультрасовременных шаблонов на graphicriver или themeforest. Накупите крутейших шрифтов, картинок и видеозаставок. И...
    Ничто из вышеперечисленного не сделает вас годным дизайнером. Я нередко встречался с подобными мыслями. "Вот прикуплю себе мак помощнее, поставлю туда Sketch и буду делать крутейшие интерфейсы и бабло заколачивать". Не будете. Пока не научитесь правильно мыслить, находить вдохновение, познавать азы техники и применять все это на практике. А интернет завален статьями, видеокурсами, тренингами и прочим барахлом. Бесплатным и платным. Бери и учись. Было бы желание и время. Что интересует? Тот же sketch? Гуглим про скетч и находим массу сайтов с туториалами или даже целые тренинги. Они, конечно, платные. 7-10 килорублей отдать придется, зато за месяц из тебя сделают реального скетч-ниндзя, который будет по-настоящему быстро и брутально клепать интерфейсы для айфонов.
    Ответ написан
    Комментировать
  • Как спроектировать базу данных для многоязычного сайта?

    Rsa97
    @Rsa97
    Для правильного вопроса надо знать половину ответа
    Если новость всегда будет заполняться на обоих языках и количество языков расти не будет, то просто по два поля _en и _ru.
    Иначе надо делать отдельную таблицу заголовков, текста и т.д. в виде (id_новости, id_языка, текст)
    Ответ написан
    Комментировать
  • Как вывести данные товаров со скидкой на главной странице Opencart?

    @TheSameSon
    Чтобы получить список товаров смотрите в catalog/model/catalog/product.php
    Из коробки в опенкарте нет возможности получить товары только со скидкой, поэтому лучше ее добавить в метод getProducts(), иначе придется получать список всех товаров и фильтровать уже в контроллере - не хорошо.
    Ну и как уже написали, переменные для header.tpl определяются в catalog/controller/common/header.php, поэтому там вы и подгружаете модель, получаете список товаров и упаковываете в массив $this->data
    Ответ написан
    3 комментария
  • Не работает селектор getElementsByClassName, не работает createElement. Как решить эту проблему?

    Petroveg
    @Petroveg
    Миром правят маленькие с#@&ки
    1. После создания элемента его нужно вставить в документ (только нужно быть уверенным, что элемент, в который вы вставляете, уже присутствует в DOM). Например:

    var newDiv = document.createElement('div');
    ...
    document.body.appendChild(newDiv);

    2. В имени метода getElementsByClassName не смущает множественное число?)

    document.getElementsByClassName("myclass")[0].innerHTML = "Text";
    Ответ написан
    1 комментарий
  • Как учить веб дизайн?

    IonDen
    @IonDen
    JavaScript developer. IonDen.com
    • Веб дизайн совсем не обязательно включает в себя верстку. Верстальщики всегда найдутся.
    • Курсы фотошопа? Полезное дело конечно, но не более того. Фотошоп - это всего лишь инструмент. Чуть более продвинутый чем лист бумаги с карандашом и фломастерами (или мольберт с красками)
    • Самое главное, о чем все забывают - это учиться рисовать, учиться видеть красивый и удобный интерфейс, учиться делать мокапы и продумывать логику сайтов и приложений, изучать юзабилити, работу с цветом, композицией, типографику и многое многое другое.
    Ответ написан
    Комментировать
  • Как учить веб дизайн?

    dremchee
    @dremchee
    Веб-Дизайнер, Арт-Директор
    Никогда не начинайте учить с случайных видео роликов. Начните с проектирования и решения задач клиента. Немного статей на тему проектирования и обзор книжек. Затем детально изучите вопрос типографики и будет вам +200 в карму.
    Лично я начинал с верстки HTML/CSS, чего бы не стал бы делать, если мне предоставился шанс заново знакомиться с веб дизайном.

    Отдельно хочу посоветовать литературу:
    Веб-Дизайн: книга Стива Круга или "не заставляйте ...
    Психбольница в руках пациентов
    Алан Купер об интерфейсе. Основы проектирования вз...
    Ответ написан
    2 комментария
  • Вендорные префиксы умерли?

    jlekapb
    @jlekapb
    .do
    Для некоторых свойств умерли и есть нативная поддержка, но лучше проверять поддержку свойств в браузерах на этапе разработки, например, для border-radius: caniuse.com/#search=radius

    Еще можно использовать autoprefixer или похожие плагнины для подстановки вендорных префиксов автоматически.
    autoprefixer для grunt: https://github.com/nDmitry/grunt-autoprefixer
    Ответ написан
    1 комментарий
  • Чем куки отличаются от сессии в PHP?

    Fesor
    @Fesor
    Full-stack developer (Symfony, Angular)
    Нууу давайте разбираться.

    Для начала почитайте про HTTP на той же вики. Досканально знать не нужно, но стоит минимально понимать структуру запросов/ответов, понимать что у запроса и ответа есть заголовки и тело (тела может и не быть, зависит от типа запроса/ответа).

    Так вот. Куки. Куки живут на стороне браузера. Они передаются HTTP заголовком на каждый запрос на сервер (даже если вы за картинками полезли). Есть просто куки, есть http-only куки. Куки могут быть разграничены по хосту и пути. Все это дает нам гибкость и помогает с секьюрностью. В PHP содержимое $_COOKIE предоставляет нам SAPI. Когда PHP получает на обработку запрос, SAPI используемое (php-fpm, cgi, mod_php имеют свои реализации SAPI) в данный момент берет заголовки и тело запроса, парсит их и заполняет все эти суперглобальные массивы типа $_SERVER, $_GET и в том числе и $_COOKIE. Все что прислал нам клиент (что-то что делает запросы это клиент, что-то что их обрабатывает - сервер), а куки шлет нам браузер только те что можно исходя из того куда шлется запрос. Устанавливаются куки заголовком Set-Cookie в ответе, то есть тут больше нужно читать в принципе про HTTP а не про PHP. PHP просто позволяет вам работать с этим добром. Вы можете сэтить куки напрямую работая с заголовками ответа при помощи функции header. Более того, если выставить время жизни куки в 0, то как раз таки они а не сессия будет сбрасываться при закрытии браузера так как тот будет забывать все такие куки.

    Вот... сессии... В PHP сессия обычно это файл. Просто какой-то файл с рандомным именем. Если скажем в php.ini указано session.autostart или делается вызов session_start то создается файл под сессию пользователя (можно переместить в рэдис или мемкэш, свое хранилище и т.д в зависимости от нужд. Так же данные можно шифровать, что по умолчанию и происходит). Этот файл имеет ID, просто какая-то рандомная строка. И если при обработке запроса не нашлась сессия с предыдущего запроса - создается новая.

    И вот мы подошли к самому интересному - как PHP связывает сессию с предыдущего запроса с текущей. И тут все довольно просто - куки. Когда пользователю присваивается сессия, автоматически сэтится http-only (что бы нехорошие люди не могли из js увести нашу сессию) кука, в которую записан идентификатор сессии. В дебагере браузера можете посмотреть есть ли у вас кука PHPSESSID (название можно менять в настройках, да и вообще сессии можно не только через куки связывать, но это уже загоны по секьюрности) когда будете эксперементировать с сессиями.

    Когда запрос обрабатывается SAPI, при наличии session.autostart, перед тем как начинать создавать новую сессию, пых все же смотрит а есть ли у нас кука с идентификатором сессии, проверяет есть ли у него такая, и если есть успокаивается и не создает новую. Поскольку сессия привязывается через куки, то можно выставить время жизни этой самой куки (в php.ini) и таким образом регулировать время жизни сессии.

    Вот... когда использовать куки а когда сессии? Желательно понимать, что чем больше данных в куках (а у них есть лимит к слову) - тем больше данных мы передаем на каждый запрос. То есть это не круто когда что бы получить 1 килобайт данных мы должны в заголовках передать пару килобайт кук. Люди, повернутые на оптимизации, даже картинки хранят на отдельных cookie-less доменах что бы уменьшить количество трафика и пакетов (обычно простенький HTTP запрос влазит в размеры одного TCP пакета). Если вам нужно работать с этими данными из JS на любой странице, например локаль выбранноую пользователем для того что бы применять переводы еще и в JS, то стоит использовать куки. Для всео остального лучше конечно же использовать сессии. Во всяком случае на начальных этапах когда что-то сильно сложное вам делать не придется.
    Ответ написан
    2 комментария
  • Чем хорош Ruby?

    @Masterme
    Это как слепому объяснить, чем радуга лучше полутени.
    Как вы хотите чтобы вам это объяснили? Привели примеры из жизни, где питон берёт в рот, а руби справляется на отличненько? Такие примеры, конечно, есть, например, лямбды, но вы всё равно не въедете, если до сих пор не поняли, что такое семантика языка и почему она важна. Вы могли взять питон, взять руби, изучить каждый из них пару недель и сделать выводы. Вместо этого вы ждёте пока вам в мозг положат готовое решение. Этого не произойдет. Вам скорее хуй в рот положат, так же как если бы вы были слепы - вам не стали бы объяснять разницу между радугой и полутенью, а дали бы под дых и отобрали бы мелочь.
    Вы, тупицы, думаете, что познание языков программирования - это нечто внешнее, что можно повторить, сымитировать. Вам сказали - вы повторили - и вроде как знаете тот или иной ЯП. В действительности же, познание языков программирования - это большая внутренняя работа, которую человек проделывает с абстракциями в своей голове. И только если человек способен к абстрактному мышлению - только тогда он, помножив эту способность на знание языков, может понять разницу между ними. Для остальных порог вхождения высок, и, честно говоря, я этому рад.
    Ответ написан
    9 комментариев
  • Как правильно учить Javascript?

    IonDen
    @IonDen
    JavaScript developer. IonDen.com
    Вы наверное слышали, что каждый уважающий себя программист обязан написать несколько велосипедов? И JavaScript-программисты тоже так делают и еще как! Так вот в этом нет ничего плохого, это отличное самообучение.

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

    Не пытайтесь брать сразу сложные вещи, начинайте с малого. Как заметили выше, не смотрите пока что на очень сложные книжки, их читать сейчас почти бесполезно.
    Ответ написан
    6 комментариев
  • Какие юзать курсы по HTML, CSS, PHP для начинающих?

    @Masterme

    Послушайте. Было бы смешно, если бы не было так грустно. Каждый день пачками появляются вопросы где и как научиться программировать. Ладно, я бы понял, если бы спрашивали как обучиться столярному делу или садоводству. Но блин... интернет просто пропитан компьютерной тематикой и, особенно, вебом. Гугл, самоучитель - и понеслась. Но нет же, надо зайти в QA и спросить "как мне выучиться?". Действительно, как же выучиться? Может быть старым испытанным способом: найти руководство, прочитать и выполнить советы? А где найти руководство? В поисковой системе? О, неужели это работает? А как сформулировать запрос? Достаточно вписать то что я хочу получить? Что ж, звучит недурно. Похоже, я и вправду смогу освоить эту хитрую технику. Но она такая сложная... я ведь учусь всего лишь в 10м классе...

    Ответ написан
    6 комментариев
  • Для чего нужна ORM?

    Zorkus
    @Zorkus
    Сам по себе ORM, именно как maaping, в крупных проектах нужен как раз очень сильно. Опишу здесь свой опыт. Если понравится кому, может и статью потом.

    Итак.
    Представьте себе — у меня есть очень крупная система, и есть в ней таблица orders, в ней скажем, 50 колонок (на самом деле у нас 150, ну да ладно. Нормализаторы, молчать! Про нормальные формы я тоже знаю). И вот надо значит вам выбрать один ордер и показать его на экране. Допустим, вы пишете селект, неважно. Дальше что делать, в промежуточном слое? Вы не же вызываете хранимую процедуру (запрос) напрямую с, скажем, JSP страницы (я надеюсь), вам все равно надо получить данные и передать их как-то.
    Так что, передавать их в виде массива, ArrayList-a, ассоциативного массива имя колонки/значения? Ну так дико громоздно, неудобно, и очень легко ошибиться. А если вам надо несколько ордеров, тогда что, создавать вложенные коллекции для конвертации результатов? Неудобно же.

    Потому, очевидно, нам нужен объект Order, имеющий все нужные property, и нужен код, который умеет конвертировать результаты скл запрос в эти объекты (или коллекцию этих объектов).

    Далее, очевидно, что писать руками _все_ запросы трудно и нудно, легко ошибиться, т.к. в Java они будут представляться в коде в виде строк (а значит, никакой статической типизации и compile-time проверок и прочее и прочее), и их надо держать либо в Java коде (если они мелкие), либо, если побольше, выносить в отдельные XML файлы.

    В общем, ORM в больших проектах нужен для упрощения рутинной части. Без него — никуда :)

    Безусловно, обойтись ТОЛЬКО ORM не получится. Есть у нас масса мест, где сложная логика написана в хранимых процедурах в 500-1000 строк на PL/SQL, написанная через ORM /Java она бы занимала в 10 раз больше и работала в 2 раза медленнее (при этом, она была бы еще и менее понятная, т.к. есть такая логика, которые в терминах реляционной алгебры описывается куда проще, чем в терминах ООП :), следовательно ложится на ORM со скрипом). Сколько нибудь сложные запросы с подзапросами, юнионами, хитрыми джойнами тоже писать через чистый ORM громоздко. Оптимизировать запросы, работающими в таблицах где, хотя бы, несколько сотен миллионов записей, без доступа к планам SQL оптимизатора и статистики/средствам мониторинга уровня СУБД тоже крайне сложно. Так что без SQL тоже — никуда :)
    Ответ написан
    3 комментария