• Php DebugBar + Slim?

    @Kirill-Gorelov Автор вопроса
    С ума с IT
    Вдруг кому пригодиться
    $container->debugbar->addMessage($mes,$flag);
    Ответ написан
    Комментировать
  • Не могу настроить CodeIgniter?

    @luka1sv Автор вопроса
    Web, Swift, Servers
    Все решилось обычным AllowOverride All в конфиге apache2
    Ответ написан
    Комментировать
  • Как в atom убрать строку Key Binding?

    @evilelf Автор вопроса
    Тупой, руки из жопы, кодю за зп и т.п. и т.д.
    Нашёл, это ctrl+.
    Ответ написан
    Комментировать
  • Как получить нужную релевантность результатов в поиске по multivalue полю?

    morr
    @morr Автор вопроса
    Отвечу сам на свой вопрос.

    Если хочется хранить массив названий в одном поле, то к "name" полю можно добавить "index_options": "docs", и количество вхождений слова перестанет влиять на релевантность.
    Так же можно добавить "norms": { "enabled": false } и общая длина строки перестанет влиять на релевантность.
    Но всё это костыли, которые не помогут для более сложных случаев, когда затем вам захочется сделать разные хитрые комбинации повышения/понижения релевантности для разных ситуаций.
    Например, с массивом названий не выйдет сделать буст релевантности при полном совпадении одного из названий с искомой фразой.

    Поэтому единственным подходящим вариантом вижу построение индекса таким образом, чтобы одно название товара "мапилось" на одну строку в индексе эластика.

    Для понимания того, как считается релевантность очень помогла статья Theory Behind Relevance Scoring.

    Так же для себя обнаружил, что на релевантность влияет, насколько часто встречается слово во всём индексе https://www.elastic.co/guide/en/elasticsearch/guid... И влияет оно порой очень сильно. Поэтому при реализации поиска по названиям idf фактор ранжирования стоит в обязательном порядке отключать https://stackoverflow.com/questions/33208587/elast... (работает в версии эластика начиная с 6.2)
    Ответ написан
    Комментировать
  • Почему так происходит?

    Compolomus
    @Compolomus
    Комполом-быдлокодер
    у вас в файле вывод отладки, потом ругается что заголовки поставить не может, так как поезд ушёл
    Ответ написан
    Комментировать
  • Как в PhpStorm добавить строку в коде в закладки (что бы быстро переходить)?

    Mesuti
    @Mesuti
    Быстро установить закладку f11
    Перейти к закладке Shift+F11
    Дать имя закладке Ctrl+F11

    \\
    кому пригодилось - лайк)
    Ответ написан
    Комментировать
  • Смена URL без перезагрузки страницы?

    siegerstein
    @siegerstein
    history.pushState(null, null, '/anypath');
    Ответ написан
    Комментировать
  • Как отображать подкатегории в breadcrumbs на yii2?

    @LiguidCool
    Реализация древовидной структуры одна из самых геморройных и часто встречающихся в вебе задач.
    https://gist.github.com/codedokode/10539720

    перебирать все элементы alias и дергать из БД данные

    Естественно запрос к БД в цикле это дно ... Один из самых элегантных методов конечно Nested Tree, позволяет почти все реализовать одним SQL. А тут неплохой пример, можно запросы копировать (только свои данные подставляй).

    Ну и для yii2 гугл выдал https://habrahabr.ru/post/266155/
    Ответ написан
    1 комментарий
  • Не могу определится с выбором: PHP или Python для веб?

    @trofimovdev
    Python
    Отдам свой голос в пользу Python:
    • простой синтаксис
    • применяется не только в веб
    • сложнее найти работу, но и платят, насколько я знаю, неплохо :)
    • лучше коммьюнити (чисто субъективное мнение)
    • быстрая разработка


    ИМХО, PHP умирает. Все, что могу про него сказать:
    • популярные CMSки (Wordpress, Drupal, Joomla!, etc.) написаны на нем и было бы неплохо его знать
    • проще найти работу (больше заказов)
    • большая конкуренция среди разработчиков
    • куча говнокода
    Ответ написан
    7 комментариев
  • Обновить свойство существующего заказа в битрикс?

    То, что вы показываете не свойства заказа, а свойства товара в корзине.

    На D7 делается так

    /** int $orderId номер заказа
    Получаем корзину заказа
     */
    $basket = Sale\Order::load($orderId)->getBasket();
    
    /*Товары в корзине*/
    $basketItems = $basket->getBasketItems();
    /*перебор товаров*/
    foreach($basketItems as $item)
    {
    /*Свойства товара в корзине*/
    $basketPropertyCollection = $item->getPropertyCollection(); 
    
    /*Обновляем значение нужного свойства*/
    foreach ($basketPropertyCollection as $propertyItem) {
        if ($propertyItem->getField('CODE') == 'COLOR') {
    
            $propertyItem->setProperty(array(
             array(
                'NAME' => 'Цвет',
                'CODE' => 'COLOR',
                'VALUE' => 'Кофе с молоком',
                 'SORT' => 100,
           ),
           ));
            $basketPropertyCollection->save();
    
            break;
        }
    }
    
    
    }
    Ответ написан
    Комментировать
  • Что такое static в ООП php?

    Fesor
    @Fesor
    Full-stack developer (Symfony, Angular)
    Для этого вам надо понимать в чем разница между классами и объектами. Вот есть методы и свойства объектов а есть методы и свойства классов. Последние как раз статические свойства и методы. Отсюда и все особенности их работы и возможные варианты использования. Класс у нас в системе может быть только один, а экземпляров этого класса (объектов) много.

    Как правило статические методы используются в качестве порождающих. То есть вы вызываете статический метод класса а он тебе экземпляр этого класса.

    $foo = Singleton::instance();
    $bar = AbstractFactory::create('bar');
    $buz = Buz::fromArray([
        'many' => 'arguments', 'Buz' => 'has', 'private' => 'constructor'
    ]);


    В PHP статику еще любят применять как замену обычным функциям в силу того, что для классов автозагрузка у нас есть, а для функций нету. Не сказать что это сильно хорошо, я бы даже сказал что это плохо. Учитывая что сейчас есть composer а благодаря opcache оверхэда от подключения для каждого запроса файла особо и нет. В целом лучше стараться избегать использования статики или во всяком случае делать в статических методах хоть сколько нибудь сложные вещи. И лучше всегда ограничиваться только случаями для порождения объектов, тут статика выглядит логично.

    Если рассматривать с точки зрения пораждающиз статических методов, нам так же надо знать кого создавать. И тут появляются два ключевых слова - self и static. Причем self равносильно написанию имени класса в котором наш статический метод находится и просто позволяет уменьшить дублирование. static же намного интереснее, так как оно указывает непосдерственно на тот класс, из под которого был совершен вызов. Скажем если у вас есть наследование вы можете запихнуть порождающий метод в базовый класс, и тогда узнать кого создавать в принципе не проблема.

    class Foo {
        public static function createWithSelf() {
             // равносильно new Foo();
             return new self();
        }
        public static function createWithStatic() {
             // а тут мы пока не знаем кто такой этот static
             $foo = new static();
        }
    }
    
    class Bar extends Foo {}
    
    $foo = Bar::createWithSelf(); // тут будет экземпляр Foo
    $bar = Bar::createWithStatic(); // тут будет экземпляр Bar
    Ответ написан
    1 комментарий
  • Semantic UI или Bootstrap 3 + Font Awesome?

    xmoonlight
    @xmoonlight
    https://sitecoder.blogspot.com
    Библиотека Semantic UI - реально хорошая и очень удобная, и лучше учить её, чем bootstrap!
    А то, что она там тормозит - можно выкинуть лишнее и/или ПОМОЧЬ! поправить им: код же - OpenSource.
    В общем, я "ЗА" изучение Semantic UI двумя руками!
    Ответ написан
    2 комментария
  • Как интегрировать Rocket.chat в свой проект?

    zorca
    @zorca
    Установить. -> Настроить. -> Пользоваться.
    Ответ написан
    2 комментария
  • Как правильно использовать Docker для веб разработки?

    zvd
    @zvd
    Software developer interesting in DevOps
    Добрый день.
    Все, как вы их назвали, «задачи» должны быть по разным контейнерам.

    1. Что брать за базовый образ?
    Что используете то и берите. Используете в работе Debian? Берите Debian ( https://registry.hub.docker.com/_/debian/ )
    2. Чтобы создать свой базовый образ который будете в дальнейшем использовать для приложения, вот вам пример Dockerfile:
    #
    # MyBaseimage Dockerfile
    #
    
    # Pull base image.
    FROM ubuntu:14.04
    
    MAINTAINER Your Name <your.email@gmail.maybe>
    
    RUN apt-get update
    RUN apt-get upgrade -y
    
    RUN apt-get install -y language-pack-en
    ENV LANGUAGE en_US.UTF-8
    ENV LANG en_US.UTF-8
    ENV LC_ALL en_US.UTF-8
    
    RUN locale-gen en_US.UTF-8
    RUN dpkg-reconfigure locales
    
    RUN echo "Etc/UTC" > /etc/timezone
    RUN dpkg-reconfigure -f noninteractive tzdata
    
    RUN apt-get install -y build-essential
    RUN apt-get install -y python python-dev python-setuptools python-pip python-virtualenv
    RUN apt-get install -y libxml2-dev wget
    RUN apt-get install -y libpcre3
    RUN apt-get install -y libpcre3-dev
    RUN apt-get install -y libssl-dev
    RUN apt-get install -y libncurses5-dev
    RUN apt-get install -y git git-core
    RUN apt-get install -y libpq-dev
    
    # install nginx
    RUN apt-get install -y software-properties-common python-software-properties
    RUN apt-get update

    Собрать image в директории где у вас лежит Dockerfile
    docker build -t your_docker_account/your_baseimage .

    3. Dockerfile для сборки вашего образа уже с приложением
    #
    # MyApp Dockerfile
    #
    
    # Pull base image.
    FROM your_docker_account/your_baseimage
    
    MAINTAINER Your Name <your.email@gmail.maybe>
    
    # Set instructions on build.
    RUN virtualenv /env
    ADD ./ /code
    
    RUN cd /code; /env/bin/python setup.py install
    RUN cp /code/config/config.yml.docker_example /etc/code/config.yml
    
    # Expose ports.
    EXPOSE 8484
    WORKDIR /code
    CMD ["/env/bin/python", "app.py"]

    4. Собрать образ с приложением
    docker build -t your_docker_account/your_app_container .

    5. Запустить контейнер с БД, в качестве примера PostgreSQL
    docker run -p :5432:5432 --name my_postgresdb_container -e POSTGRESQL_DB=mydb_name -e POSTGRESQL_USER=mydb_user -e POSTGRESQL_PASS=super_secret_password -d kamui/postgresql

    для mariadb аналонично, контейнеры ищем здесь: https://registry.hub.docker.com/
    6. Запустить контейнер с вашим приложением, пример:
    docker run -d -p :5000:5000 \
      --name my_app_container \
      --link my_postgresdb_container:postgresdb \
      -e DOCKERDB_ENV_POSTGRESQL_DB=mydb_name \
      -e DOCKERDB_ENV_POSTGRESQL_USER=mydb_user \
      -e DOCKERDB_ENV_POSTGRESQL_PASS=super_secret_password \
      your_docker_account/your_app_container

    7. Подключиться к запущенному контейнеру с приложением
    docker exec -it your_app_container /bin/bash
    8. Читать stdout запущенного приложения в контейнере
    docker logs -f your_app_container

    + Чтобы автоматизировать запуск всех необходимых контейнеров берите Docker Compose ( https://docs.docker.com/compose/ )
    Пример файла конфигурации:
    your_app:
      build: .
      links:
        - postgresdb
      ports:
        - "5000:5000"
      environment:
        DOCKERDB_ENV_POSTGRESQL_DB: mydb_name
        DOCKERDB_ENV_POSTGRESQL_USER: mydb_user
        DOCKERDB_ENV_POSTGRESQL_PASS: super_secret_password
    postgresdb:
      image: kamui/postgresql
      ports:
        - "5432:5432"
      environment:
        POSTGRESQL_DB: mydb_name
        POSTGRESQL_USER: mydb_user
        POSTGRESQL_PASS: super_secret_password

    И теперь вместо пунктов 5 + 6 где мы запускали контейнеры мы можем всё стартануть одной командой
    docker-compose up

    + можно смонтировать код в контейнер и разрабатывать непосредственно в docker'контейнере.
    Надеюсь чем-то вам помог.
    Ответ написан
    3 комментария
  • Bitrix: Не могу сохранить детальную картинку?

    @maxyc_webber Автор вопроса
    Web-программист
    вобщем косяк был найден методом перебора ядра. оказалось что неверный символ был не в имени файла, а в section_code - вместо знаков подчеркивания были дефисы. но почему ошибка указывала на картинку не знаю. переименовал товар и все ок стало

    спасибо битриксу за столько секса.
    Ответ написан
    Комментировать
  • Как в битриксе используя ORM получить значение из нескольких сущностей?

    winer
    @winer
    занимаюсь разработкой сайтов на 1c-bitrix
    Тут можно почитать про связи между ORM сущностями.

    Если сущности, о которых вы спрашиваете, связаны, то делается это довольно просто.

    Допустим вот так описано поле по которому идет связь между сущностью Book и Author внутри класса BookTable:
    new Entity\ReferenceField(
        'AUTHOR',
        'SomePartner\MyBooksCatalog\Author',
        array('=this.AUTHOR_ID' => 'ref.ID'),
        array('join_type' => 'LEFT')
    )

    тогда чтобы выбрать какое либо поле из сущности author надо в getList добавить Author.<Код поля>. например так:
    BookTable::getList(array(
        'select' => array(
            'TITLE',
            'AUTHOR_NAME' => 'AUTHOR.NAME',
            'AUTHOR_LAST_NAME' => 'AUTHOR.LAST_NAME'
        )
    ));

    Пример взят из статьи по ссылке приведенной выше.
    Ответ написан
    3 комментария
  • NGINX + PHP-FPM. Как запускать разные версии PHP для разных юзеров?

    DevMan
    @DevMan
    phpbrew или virtphp
    тут я приводил пример настройки NGINX+PHP-FPM для 2-х версий PHP при помощи phpbrew.
    Ответ написан
    9 комментариев
  • Как сделать редирект htaccess mod_rewrite?

    shambler81
    @shambler81 Куратор тега htaccess
    ребят ну чесное слово а че гугл не судьба ну ищется вообще в за 1 секунду.
    ############################################################################
    #### Убираем index.php, если он есть в конце URL                        ####
    ############################################################################
    RewriteCond %{REQUEST_METHOD} =GET
       # Выявляем GET запрос в URL (не POST).
    RewriteCond %{REQUEST_URI} ^(.*)/index\.php$
       # URL cодержит index.php в конце.
    RewriteRule ^(.*)$ %1/ [R=301,L]
       # Удалить index.php из URL.

    Что-то вроде этого?
    Ответ написан
    1 комментарий