Задать вопрос
  • Как выглядит современный процесс верстки?

    @coderxx
    keep calm and learn js
    Не уверен что начинающим верстальщикам нужно заморачивать себе голову всем этим ужосом:) Но может кому-то и пригодится:
    - создаю новый проект на базе немного допиленного Optimized4HTML (можно копировать папку руками, можно сохранить в PhpStorm как темплейт, второе разумеется удобнее). Проект имеет следующую структуру:
    5c13ab56a03e8108817224.png
    - открываю его в PHPStorm, через командную строку устанавливаю пакеты и запускаю вотчер со следующей конфигурацией:
    5c13ad0d5c912921297608.png
    (таким образом отслеживаются изменения в файлах index.html, *.scss, common.js, а так же релодится браузер; в процессе верстки просто перескакиваем на виртуальный рабочий стол с открытым сайтом и сразу видим изменения, а если есть второй монитор то вообще песня). Кстати, перечень пакетов ннада?
    5c13ae2b57082880473288.png
    - из плюшек emmet и sass обязательно, в качестве таскранера - gulp.
    - макеты у меня в .sketch, так же кто не пробовал советую попробовать Figma, получите практически скетч в браузере. Adobe Photoshop не люблю. Adobe XD не пробовал, но осуждаю. Здесь наверное больше дело вкуса и реалий, в которых вы работаете (например, в каком формате получаете макеты, какая ОС на рабочем компе).
    Вроде все просто. Что непонятно - спрашивайте, отвечу.

    UPD. Optimized4HTML недавно перешел на Gulp 4, советую попробовать. Учтите, что Gulp 4 не имеет обратной совместимости с галпфайлами предыдущей версии, так как немного изменился синтаксис.
    Ответ написан
    9 комментариев
  • Symfony4 Doctrine Получаю ошибку при сохранении в базу, как можно исправить (association field)?

    Decadal
    @Decadal
    вам нужно сделать тип для поля pics nullable=true и убрать строгий тайпхинт если он есть
    Ответ написан
  • Планшет или читалка - что лучше?

    @Mixxer
    Читалка подходит больше для художественной литературы, так как нет картинок и формат обычной удобный.

    Техническая же в основном в pdf, на читалках не особо удобно.

    У меня на руках и то и то есть, есть с чем сравнивать.
    Ответ написан
    9 комментариев
  • Планшет или читалка - что лучше?

    eapeap
    @eapeap
    Сисадмин, Беларусь
    как всегда - под задачу.
    Читать книги (только книги, тексты без картинок) - читалка, однозначно.
    А еще в Инет залезть, цветной журнал в ПДФ посмотреть, ... - планшет.
    Ответ написан
    Комментировать
  • Планшет или читалка - что лучше?

    vanya_beseda
    @vanya_beseda
    Front End
    Смотря что читать. Если pdf то нужен планшет. Для литературы конечно же электронная книга. Сам пользуюсь Amazon kindle первого выпуска и всем доволен, читать комфортно при любом освещении.
    Для pdf есть iPad Air. Пробовал смотреть pdf на kindle - кошмар полный.
    Покупать нужно обязательно ридер с подсветкой. То что в Kindle Voyage экран на 300 ppi роли не играет абсолютно, я на своем никакой размытости шрифта не вижу, все гладко. Хотя ридер не самый новый но обновления выходят, хотя особой ценности в них нет, но мелкие правки есть.
    Вся суть ридера в данной картинке:
    popup-glare-compare.jpg
    Ответ написан
    9 комментариев
  • Какую CMS выбрать?

    iKatkovJS
    @iKatkovJS
    Symfony Developer
    Еще есть Sulu, который берет за основу компоненты Symfony
    Ответ написан
    Комментировать
  • Какую легковесную cms на базе Laravel выбрать для проекта?

    mashletov
    @mashletov
    Math.random()
    Никакую. Нормальной поддерживаемой CMS на Laravel нет.
    Ответ написан
  • Я использую css grid повсюду. Я болен?

    xmoonlight
    @xmoonlight
    https://sitecoder.blogspot.com
    Проверка простая:
    1. Все стандарты соблюдены?
    2. Валидация проходит?
    3. Кросс-браузерно (включая мобильные клиенты) отображается везде корректно?
    4. Оптимизация производительности кода - максимальная?
    5. Работать с кодом/разметкой (при добавлении функционала) - удобно?
    Вы - НЕ больны 100% !

    PS: валидация вёрстки (и не только): тут
    Ответ написан
    3 комментария
  • Какой уровень MySQL/MariaDB нужно знать среднему php-программисту?

    Wolfnsex
    @Wolfnsex
    Если не хочешь быть первым - не вставай в очередь!
    PS: Страх ещё вызван тем, что на одном из прошлых собеседований меня начали спрашивать, что такое PK и индексы. Ну я ответил в общем. Потом, он начал говорить, что этого недостаточно, нужно знать как это устроено на уровне файлов и чуть ли не исходников субд. Это действительно, я должен знать подобные тонкости?
    Чёткого деления на "Jun/Mid/Sen" - нет и быть не может по определению. Технологий столько, что знать их все кому-либо не под силу. К тому же, технологии развиваются очень быстро... Соотв., компаний так же много и требований к должности у них тоже много. Тот, кто сейчас работает на должности ведущего разработчика в конторе типа ООО "Шаражмонтажсайтпродаж" (условно), вряд ли сможет претендовать на должность хотя бы мидла в какой-то серьёзной, солидной фирме.
    Ответ написан
    2 комментария
  • Какой уровень MySQL/MariaDB нужно знать среднему php-программисту?

    un1t
    @un1t
    Потом, он начал говорить, что этого недостаточно, нужно знать как это устроено на уровне файлов и чуть ли не исходников субд. Это действительно, я должен знать подобные тонкости?


    Нет это заморочки конкретного человека.

    Эксплейн надо понимать, что он выводит и как с его помощью найти проблему, оптимизировать запрос. А так нужно знать про индексы, селективность, транзакции, джойны, group by, having, подзапросы.

    Я много раз видел что люди спрашивают, зачем знать SQL, если есть ORM. Десять лет назад, люди спрашивали обратное - зачем нужен ORM, если я тоже самое могу написать на SQL. У меня ощущение, что веб-разрабы с опытом работы от пары лет вовсе не знают SQL. Либо они используют только ORM, либо вообще какую-нибудь MongoDB (хотя во многих случаях ее использование не адекватно задаче).

    Ну и от команды к команде средний уровень сильно разнится.
    Ответ написан
    Комментировать
  • Какой уровень MySQL/MariaDB нужно знать среднему php-программисту?

    FanatPHP
    @FanatPHP
    Чебуратор тега РНР
    Для миддла надо подтянуть только п. 3. У Светы Смирновой есть несколько отличных презентаций по работе с explain, они легко находятся гуглом.

    Еще желательно различать транзакции и блокировки, когда что использовать.

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

    Вообще, по моему опыту, не стоит переоценивать результаты интервью. Когда я 5 лет назад ходил по собеседованиям, то после двух из них, которые я сам посчитал проваленными, мне прислали предложения о работе.
    Ответ написан
    1 комментарий
  • Как организовать роли в Symfony?

    BoShurik
    @BoShurik Куратор тега Symfony
    Symfony developer
    security.yml
    security:
        access_control:
            - { path: ^/ }

    RequestVoter.php
    use Symfony\Component\HttpFoundation\Request;
    use Symfony\Component\Security\Core\Authentication\Token\TokenInterface;
    use Symfony\Component\Security\Core\Authorization\Voter\VoterInterface;
    use Symfony\Component\Security\Core\Security;
    
    class RequestVoter implements VoterInterface
    {
        /**
         * @var Security
         */
        private $security;
    
        public function __construct(Security $security)
        {
            $this->security = $security;
        }
    
        /**
         * @inheritDoc
         */
        public function vote(TokenInterface $token, $subject, array $attributes)
        {
            if (!$subject instanceof Request) {
                return self::ACCESS_ABSTAIN;
            }
    
            $route = $subject->attributes->get('_route');
            $routeRole = $this->getRoleByRoute($route);
    
            if ($this->security->isGranted($routeRole)) {
                return self::ACCESS_GRANTED;
            }
    
            return self::ACCESS_DENIED;
        }
    
        protected function getRoleByRoute(string $route): string
        {
            // ...
        }
    }
    Ответ написан
    3 комментария
  • Как проконтролировать был ли звонок по партнерскому телефону CPA партнерки?

    @f9k56
    Поставьте сервер телефонии и через него лейте трафик на номер партнёрки. Минус - нужно использовать свои номера и администрировать сервер. Плюс - с трафом можно делать всё, что угодно, в том числе переводить на другого оффера, если первый шейвит. Но анализ по статистике никто не отменял.
    Ответ написан
    2 комментария
  • Существует ли в открытом доступе нейронная сеть для чатбота (ChatBot)?

    @ivodopyanov
    NLP, python, numpy, tensorflow
    Если хочется простой seq2seq - то, например, https://www.tensorflow.org/tutorials/seq2seq
    Но обучение модели - это обычно от силы 20% всей работы, а то и меньше. Остальное - это найти данные для обучения, очистить их, сделать удобный api над моделью,...
    Ответ написан
    Комментировать
  • Какой язык программирования чаще всего используют для программирования нейронных сетей?

    @ivodopyanov
    NLP, python, numpy, tensorflow
    Facebook программирует на Lua и библиотеке Torch
    Google - на Python и Tensorflow
    Университет Монреаля во главе с Yoshua Bengio развивает Theano под Python
    У Microsoft Research есть CNTK
    Хардкорные ученые используют Matlab

    По моему опыту, Python поудобнее будет. По производительности тоже ок - там внутри во всех библиотеках все равно сишка вертится.
    Ответ написан
    Комментировать
  • Прокомментируете тестовое на react?

    rockon404
    @rockon404 Куратор тега React
    Frontend Developer
    1. Хотелось бы видеть в проекте использование redux. react+redux - это самый распространенный и востребованный стек в React разработке.

    2. Почему все хандлеры и состояния находятся в App, а не в Main? Как вы потом эту кашу собираетесь масштабировать? Переносите все, что связанно только с Main в Main. По-хорошему смотрите пункт 1.

    3. Слишком много функциональных компонентов. Подумайте их где можно заменить на классы с реализованным shouldComponentUpdate или на PureComponent, чтобы убрать лишние вызовы render этих компонентов.

    4. import Logo from 'images/Logo.png';
    называть пути к ресурсам с заглавной буквы неправильно.

    5. Вместо:
    const StyledLogo = styled.img.attrs({
      src: Logo,
      alt: 'Aviasales'
    })`
      width: 60px;
      height: 61px;
    `;

    Удобней в использовании:
    const StyledLogo = styled.img`
      width: 60px;
      height: 61px;
    `;

    и:
    <StyledLogo src={logo} alt="Aviasales" />

    6.
    const Error = ({ text }) => (
      <StyledError dangerouslySetInnerHTML={{__html: text}} />
    );

    зачем тут html?
    Для сохранения переносов строки есть css правило:
    white-space: pre-line;

    7. Вместо:
    let element;
    
    if (error && !isLoading) {
      element = <Error text={error} />;
    }
    if (!error && isLoading) {
      element = <Loader />;
    }
    if (!error && !isLoading) {
      element = (
        <>
        <Heading />
        <Main
        isCurrencyExchanging={isCurrencyExchanging}
        activeCurrency={activeCurrency}
        handleCurrencyChange={this.handleCurrencyChange}
        ticketsFilteredByStops={ticketsFilteredByStops}
        stops={stops}
        handleStopsChange={this.handleStopsChange}
        handleUncheckOther={this.handleUncheckOther}
        />
        </>
      );
    }
    return element;

    Лучше:
    if (isLoading) return <Loader />;
    
    if (error) return <Error text={error} />;
    
    return (
      <>
        <Heading />
        <Main
          isCurrencyExchanging={isCurrencyExchanging}
          activeCurrency={activeCurrency}
          handleCurrencyChange={this.handleCurrencyChange}
          ticketsFilteredByStops={ticketsFilteredByStops}
          stops={stops}
          handleStopsChange={this.handleStopsChange}
          handleUncheckOther={this.handleUncheckOther}
        />
      </>
    );


    8. Вместо:
    filterTickets = (tickets, stops) => {
      return tickets.filter((ticket) => {
        return values(stops).indexOf(ticket.stops) !== -1;
      });
    };

    Лучше:
    filterTickets = (tickets, stops) => tickets.filter(
      ticket => values(stops).includes(ticket.stops),
    );


    9. Не пропускайте отступы между методами и между вложенными свойствами css.

    10. Вместо:
    componentsDidMount() {
      // много кода
    }


    Лучше:
    componentsDidMount() {
      this.fetchSomeData();
    }


    11. Директории и индексные файлы для каждого компонента, имхо, лишнее. Лучше компоненты определять в одноименном файле и только когда возникнет необходимость в его декомпозиции, заменять на директорию и index.

    12. Loader и Error самое место в директории components/core или что-то вроде того. Там же, по-хорошему, должны находиться базовые компоненты: кнопки, инпуты, табы, чекбоксы.

    13. Styled компоненты, имхо, лучше писать в файле с компонентом, где они применяются. Так анализ кода происходит гораздо быстрей и легче поддерживать. Исключение - переиспользуемые компоненты.
    Даже если вам больше нравится выносить, называть файл style неправильно, вы там описываете компоненты, а не просто стили.
    Ответ написан
    3 комментария
  • Простыми словами о this в стрелочных функциях?

    Stalker_RED
    @Stalker_RED
    Стрелочные функции не создают собственный контекст this, а используют значение this окружающего контекста.
    © mdn

    простыми словами:
    у стрелочной функции this указывает не туда, где она была объявлена, а туда, где она была вызвана.

    group.d() вызваный внутри group делает все как надо, а вызваный в контексте window - нет. И более того, у него нет return.

    UPD: вообще group.d это обычная функция, стрелочная уже у него внутри.
    Ответ написан
    Комментировать
  • Простыми словами о this в стрелочных функциях?

    https://habr.com/company/ruvds/blog/419371/

    Потому что функция d ничего не возвращает, чего вы ожидали ?
    let group = {
    
        prop: false,
    
        d: function () {
            return (() => {
                this.prop = true;
                return this.prop;
            })();
        },
    };
    
    console.log(group.d()); // true
    console.log(group);     // {prop: true, d: ƒ}
    Ответ написан
    1 комментарий