• Почему после деплоя нет изменений на тестовом серевере?

    saboteur_kiev
    @saboteur_kiev
    software engineer
    Эм.
    В первую очередь нужно смотреть логи.
    Если там недостаточно информации, ковыряешь скрипты деплоя и добавляешь там много echo на всех важных моментах, чтобы логи были полезными и понятными.
    Потом снова смотришь логи.
    Опять же в данном вопросе информации вообще нет. Jenkins может быть настроен очень гибко, по общим фразам никто не знает. Может у тебя независимые джобы для деплоя на разные енвайрнменты, может у тебя pipeline на груви, может еще что.
    Ответ написан
    Комментировать
  • Почему после деплоя нет изменений на тестовом серевере?

    @vitaly_il1
    DevOps Consulting
    Для деплой на DEV, TEST, PROD вы используете разные ветки Git?
    Если да, то может вы не обновили ветку для TEST?
    Ответ написан
    Комментировать
  • Чем записывать экран убунту?

    LenovoId
    @LenovoId
    svg, css,js
    1 и 5
    Ответ написан
    Комментировать
  • Как принято реализовывать категории производитедей с количеством товара?

    sergey-gornostaev
    @sergey-gornostaev Куратор тега PostgreSQL
    Седой и строгий
    create table categories (
      id integer primary key,
      parent integer references categories,
      name varchar(50) not null
    );
    
    create table manufacturers (
      id integer primary key,
      name varchar(30) not null
    );
    
    create table goods (
      id integer primary key,
      category integer references categories,
      manufacturer integer references manufacturers,
      name varchar(50) not null
    );
    
    select
      m.name,
      count(*) as goods_count
    from goods as g
    inner join manufacturers as m
      on g.manufacturer = m.id
    where category = 1
    group by m.name;

    Живой пример в sqlfiddle
    Ответ написан
    2 комментария
  • Как принято реализовывать категории производитедей с количеством товара?

    @eandr_67
    web-программист (*AMP, Go, JavaScript, вёрстка).
    Ошибаешься: не один-ко-многим, а многие-ко-многим. Холодильники выпускает не одна фирма. Но и фирмы выпускают не только холодильники. И потому таблиц 3: категории, производители и связь-категория-производитель. Вот эта третья таблица содержит поле кол-ва товаров.
    Ответ написан
    Комментировать
  • Как устроены фильтры товара в интернет магазинах?

    webinar
    @webinar Куратор тега Веб-разработка
    Учим yii: https://youtu.be/-WRMlGHLgRg
    Как устроены фильтры в интернет магазинах?

    Вы думаете для этого есть 1 универсальный метод? Нет. Есть общие концепции и их несколько, а не одна + для каждого проекта надо бы думать отдельно, как рационально хранить. Все зависит от кол-ва товаров, кол-ва фильтров, типа БД и т.д. Нюансов много.

    Я это всё добавляю в базу ввиде json, чтобы потом по нему искать

    Печально. Как Вы искать по json будете? Обычно есть таблица с товарами, таблица с фильтрами, есть таблица со значениями для товара по определенному фильтру. Что-то типа:
    id | product_id | filter_id | value
    Фильтрация при этом достаточно ресурсоемкий процесс, поэтому надо разумно сделать индексы в базе и кешировать запросы.

    Там все параметры товара ложатся в ячейку к товару.

    Есть много плохих примеров, не стоит на них смотреть. Yii это framework. Качество архитектуры БД лежит полностью на программисте. yii дает полную свободу действий в этом плане. Так что кривые руки и отсутствие мозга - залог плохого результата, и инструменты разработки тут не при чем.
    Ответ написан
    5 комментариев
  • Как сделать это с точки зерния MVC?

    ilyachase
    @ilyachase
    web-developer
    Модель не должна общаться с вью.
    Форматирование - работа вью.
    Контроллер должен быть максимально тонким.
    В данной ситуации контроллер должен лишь спросить у модели баннеры определенного типа и передать их во вью. Вью сама принимает решение на основе данных (типа) баннеров, как и форматировать. Может вызывать подвью для каждого типа, например.
    Ответ написан
    1 комментарий
  • Как ограничить поиск в партиции таблицы?

    Melkij
    @Melkij
    PostgreSQL DBA
    Перепроверил догадку
    melkij=> create table events2016m11 (check (dtime >= '2016-11-01'::date AND dtime < '2016-12-01'::date)) inherits(events);
    melkij=> insert into events2016m11 values ('2016-11-20');
    INSERT 0 1
    melkij=> explain (analyze) select * from events where dtime > '2016-12-05';
                                                       QUERY PLAN                                                   
    ----------------------------------------------------------------------------------------------------------------
     Append  (cost=0.00..38.25 rows=754 width=8) (actual time=0.013..0.013 rows=0 loops=1)
       ->  Seq Scan on events  (cost=0.00..0.00 rows=1 width=8) (actual time=0.004..0.004 rows=0 loops=1)
             Filter: (dtime > '2016-12-05 00:00:00+03'::timestamp with time zone)
       ->  Seq Scan on events2016m11  (cost=0.00..38.25 rows=753 width=8) (actual time=0.009..0.009 rows=0 loops=1)
             Filter: (dtime > '2016-12-05 00:00:00+03'::timestamp with time zone)
             Rows Removed by Filter: 1
     Planning time: 0.127 ms
     Execution time: 0.032 ms
    (8 строк)
    melkij=> drop table events2016m11 ;
    DROP TABLE
    melkij=> create table events2016m11 (check (dtime >= '2016-11-01'::timestamptz AND dtime < '2016-12-01'::timestamptz)) inherits(events);
    CREATE TABLE
    melkij=> insert into events2016m11 values ('2016-11-20');INSERT 0 1
    melkij=> explain (analyze) select * from events where dtime > '2016-12-05';                                              QUERY PLAN                                              
    ------------------------------------------------------------------------------------------------------
     Append  (cost=0.00..0.00 rows=1 width=8) (actual time=0.004..0.004 rows=0 loops=1)
       ->  Seq Scan on events  (cost=0.00..0.00 rows=1 width=8) (actual time=0.004..0.004 rows=0 loops=1)
             Filter: (dtime > '2016-12-05 00:00:00+03'::timestamp with time zone)
     Planning time: 0.301 ms
     Execution time: 0.024 ms
    (5 строк)
    
    melkij=> show constraint_exclusion ;
     constraint_exclusion 
    ----------------------
     partition

    Внимательнее с явным приведением типов. У планировщика достаточно работы и не всё эквивалентное он считает идентичным. К тому же timestamp with timezone и date (без времени вовсе) надо сравнивать аккуратно.
    Ответ написан
    Комментировать
  • Я могу подготовить нужные мне участки шаблона в методе модели Kohana?

    Lyrium
    @Lyrium
    Web developer
    По моему скромному мнению идея не хороша.
    Суть в том что html должен быть в view. Хороший код - понятный код, но в вашем варианте будет не так. Например: мне нужно поправить у вас footer, лезу в view, а футера там нет.

    Модель MVC проста и известна, Kohana на ней почитать можно здесь,
    Если вкратце: Controllers = основная логика приложения, Models = обращение к бд, создание методов и классов для того чтобы разгрузить контроллеры, view = отображение весь html и данные для отображения.

    Также, я считаю, что различные helpers которые часто встраивают в фреймворки портят читабельность для широкого круга разработчиков. Чистый html знают все кто знаком web, что еще нужно?

    Для того чтобы разгрузить ваши view, как-то их структурировать и избежать повторения больших кусков кода (аля шаблон), используйте шаблонизаторы, например twig
    Ответ написан
    3 комментария
  • Class 'Serps\Core\Browser\Browser' not found, что я делаю не так?

    SerafimArts
    @SerafimArts
    Senior Notepad Reader
    потом приводил каталоги к такому виду как в коде
    Папочку vendor никогда и не при каких условиях трогать нельзя. Если что-то не правильно работает - директория удаляется и выполняется чистый install.
    Ответ написан
    1 комментарий
  • Почему в методе принимает post данные?

    ivankomolin
    @ivankomolin
    1. Закомментируйте все в методе, напечатайте var_dump('+++'); и добейтесь появления +++ в браузере, а затем в указанной программе.
    2. Затем напишите var_dump($_POST) и отправьте из advanced rest client POST данные(например через Data form).
    3. Убедитесь что выполняется условие (Request::initial()->is_ajax() AND HTTP_Request::POST == $this->request->method()) Скорее всего для него потребуется изменить Header запроса.
    4. Возвращайте свой код)
    Ответ написан
    Комментировать
  • Где брать прогноз погоды в .json формате?

    openweathermap.org/API

    Самая "правдивая" по моим наблюдениям это developer.yahoo.com/weather
    Но там XML...
    Ответ написан
    Комментировать