• Как работает full text search в postgresql, почему не выбирает НЕполное вхождение?

    select_artur
    @select_artur
    C разработчик
    Попробуйте выполнить такой запрос:
    SELECT city, country, title, tagline, description, tags
    FROM trips
    WHERE fts @@ plainto_tsquery('ru','гауди')
    ORDER BY ts_rank_cd(fts, plainto_tsquery('ru','тайны гауди')) DESC
    LIMIT 100;

    Это для GIN. Для RUM можно выполнить такой запрос:
    SELECT city, country, title, tagline, description, tags
    FROM trips
    WHERE fts @@ plainto_tsquery('ru','гауди')
    ORDER BY fts <=> plainto_tsquery('ru','тайны гауди')
    LIMIT 100;
    Ответ написан
    5 комментариев
  • Что такое registerServiceWorker в React?

    Taraflex
    @Taraflex
    Ищу работу. Контакты в профиле.
    Комментировать
  • Стоит ли новичку начинать с фреймворка или лучше учиться на чистом php?

    Ginkidayo
    @Ginkidayo
    обычный человек
    Думаю, что выбор хорошего фреймворка как Symfony или Laravel будет намного полезнее голого программирования на php. Если начнете с фреймворков, то уже будете писать более нормальный код, нежели на голом php.
    Ответ написан
    Комментировать
  • Как правильно сделать выборку в pl/pgsql функции postgresql?

    zoroda
    @zoroda
    Необычный Fullstack
    Если правильно понял задачу, то нужно что-то в этом роде:
    with book_stats_sum as (
    select book_id, sum(ctr) ctr
    from book_stats
    where book_stats.lang = 'ru' and book_stats.category = 'horror'
    group by book_id
    ) -- подстраховаться, чтобы выбиралось только по одной записи на каждый book_id
    select books.book_id, coalesce(book_stats_sum.ctr, books.ctr) ctr
    from books
    left join book_stats_sum on book_stats_sum.book_id = books.book_id
    order by coalesce(book_stats_sum.ctr, books.ctr) desc
    limit 200
    Ответ написан
    1 комментарий
  • Стал работать по часам и обнаружил, что выходит 6 часов в день. Это нормально?

    Maksclub
    @Maksclub Куратор тега Карьера в IT
    maksfedorov.ru
    Не забывайте, НИКОГДА не забывайте, что в ваше рабочее время входит не только полезная работа (написание кода):
    - разобраться с той или иной информацией, изучение проблемы
    - анализ и преоктирование
    - просто изучение нового (подходы, библиотеки)
    - отдых в определенном проценте (не считая обеда)

    Если за вас это не делает работодатель, делайте за него.
    В будущем, если будете управлять коллегами — делайте это для них.

    Главное для любого человека — он сам, никакая зп не переплюнет эгоизм, помните это.
    Ответ написан
    Комментировать
  • Почему array_search не ищет значение?

    Stalker_RED
    @Stalker_RED
    Потому что он и не должен, он только на первом уровне ищет.
    Используйте array_walk_recursive, например.
    Ответ написан
    Комментировать
  • Возможен ли Phalcon на VDS в РФ?

    @airamkad
    ВДС - это операционная система, находящаяся в вашем полном распоряжении.

    Вы, возможно, и не сможете настраивать какие-то параметры ядра операционной системы (некоторые технологии, используемые хостерами, это позволяют, некоторые не позволяют),

    но прикладное программное обеспечение, к которому относится Фалкон - вы можете ставить самостоятельно без каких либо ограничений.
    Ответ написан
    Комментировать
  • Стоит ли изучать symfony 1.4 для трудоустройства?

    xmoonlight
    @xmoonlight
    https://sitecoder.blogspot.com
    Сказал, что они делают сайты на symfony 1.4.
    После этого дальше можно не читать...
    Он сам себя дурит: вместо того, чтобы перевести проект на актуальную версию, он ищет тех, кто готов учить старьё ради того, чтобы не потерять клиента.

    От подобных предложений - сразу БЕГИТЕ.
    Ответ написан
    Комментировать
  • Стоит ли изучать symfony 1.4 для трудоустройства?

    lukoie
    @lukoie
    Симфония - адекватный фреймворк. Даже такой старой версии. Главное - получите опыт(если на работу таки возьмут), и сможете его оттачивать. А дальше уже развиваться по своему усмотрению. Вплоть до продвигания ноой Симфонии там в рабочие процессы.
    Ведь вполне может быть что им 1,4 нужно поотму что они ПОДДЕРЖИВАЮТ проекты именно на 1,4. Причина ж почем уони держаться за него какая-то все же есть. Странно что Вы не спросили о ней.
    Ответ написан
    4 комментария
  • Как ограничить время выполнения PhantomJS из php?

    Может стоит в самом phantom.js делать phantom.exit()?
    Например не получили результат с запроса или возникла ошибка, а так же по вашему желанию запустить секундомер и по достижению определенного времени отключать:
    setTimeout(() => phantom.exit(), 60000) // остановит процесс через 60 сек.
    Ответ написан
    Комментировать
  • Как сделать простой php маршрутизатор (роутер)?

    devg
    @devg
    I am Yenior software developer
    Очень простой роутер, не без недостатков, но довольно быстрый и легко использовать, дописывать под себя.

    <?php
    /**
     * Простой роутер
     * @devg
     */
    final class RouterLite {
    
      public static $routes = array();
      private static $params = array();
      public static $requestedUrl = '';
    
      /**
       * Добавить маршрут
       */
      public static function addRoute($route, $destination=null) {
        if ($destination != null && !is_array($route)) {
          $route = array($route => $destination);
        }
        self::$routes = array_merge(self::$routes, $route);
      }
    
      /**
       * Разделить переданный URL на компоненты
       */
      public static function splitUrl($url) {
        return preg_split('/\//', $url, -1, PREG_SPLIT_NO_EMPTY);
      }
      
      /**
       * Текущий обработанный URL
       */    
      public static function getCurrentUrl() {
        return (self::$requestedUrl?:'/');
      }
    
      /**
       * Обработка переданного URL
       */
      public static function dispatch($requestedUrl = null) {
    
          // Если URL не передан, берем его из REQUEST_URI
          if ($requestedUrl === null) {
            $uri = reset(explode('?', $_SERVER["REQUEST_URI"]));
            $requestedUrl = urldecode(rtrim($uri, '/'));
          }
    
          self::$requestedUrl = $requestedUrl;
    
          // если URL и маршрут полностью совпадают
          if (isset(self::$routes[$requestedUrl])) {
            self::$params = self::splitUrl(self::$routes[$requestedUrl]);
            return self::executeAction();
          }
    
          foreach (self::$routes as $route => $uri) {
            // Заменяем wildcards на рег. выражения
            if (strpos($route, ':') !== false) {
              $route = str_replace(':any', '(.+)', str_replace(':num', '([0-9]+)', $route));
            }
    
            if (preg_match('#^'.$route.'$#', $requestedUrl)) {
              if (strpos($uri, '$') !== false && strpos($route, '(') !== false) {
                $uri = preg_replace('#^'.$route.'$#', $uri, $requestedUrl);
              }
              self::$params = self::splitUrl($uri);
                
              break; // URL обработан!
            }
          } 
          return self::executeAction();
      } 
    
     /**
       * Запуск соответствующего действия/экшена/метода контроллера
       */
      public static function executeAction() {
        $controller = isset(self::$params[0]) ? self::$params[0]: 'DefaultController';
        $action = isset(self::$params[1]) ? self::$params[1]: 'default_method';
        $params = array_slice(self::$params, 2);
    
        return call_user_func_array(array($controller, $action), $params);
      }
    
    }
    ?>


    Пример использования:
    <?php
    // маршруты (можно хранить в конфиге приложения)
    // можно использовать wildcards (подстановки):
    // :any - любое цифробуквенное сочетание
    // :num - только цифры
    // в результирующее выражение записываются как $1, $2 и т.д. по порядку
    
    $routes = array(
      // 'url' => 'контроллер/действие/параметр1/параметр2/параметр3'
      '/' => 'MainController/index', // главная страница
      '/contacts' => 'MainController/contacts', // страница контактов
      '/blog' => 'BlogController/index', // список постов блога
      '/blog/:num' => 'BlogController/viewPost/$1' // просмотр отдельного поста, например, /blog/123
      '/blog/:any/:num' => 'BlogController/$1/$2' // действия над постом, например, /blog/edit/123 или /blog/dеlete/123
      '/:any' => 'MainController/anyAction' // все остальные запросы обрабатываются здесь
    ));
    
    // добавляем все маршруты за раз
    RouterLite::addRoute($routes);
    
    // а можно добавлять по одному
    RouterLite::addRoute('/about', 'MainController/about');
    
    // непосредственно запуск обработки
    RouterLite::dispatch();
    ?>


    UPDATE (07.08.2017):
    Дальнейшее развитие данного роутера см. в проекте Litero (https://github.com/bit55/litero)
    Ответ написан
    1 комментарий
  • Как правильно спроектировать бандлы и сущности в Symfony?

    voronkovich
    @voronkovich
    Если собираетесь использовать код в других проектах - выносите в бандлы или библиотеки. В остальных случаяx складывайте все в AppBundle.
    BTW: В Symfony 4 уже не будет даже AppBundle, код будет храниться в директории src/.
    Рабочий пример можете посмотреть здесь: https://github.com/EnMarche/en-marche.fr
    Ответ написан
    Комментировать
  • Php, какая цель использование регулярных выражений?

    copist
    @copist
    Empower people to give
    Ответ на вопрос очень легко гуглится. Это настолько популярная тема, что написано уже килотонны материалов на всех языках. Есть предположение, что Sergey0808 получил вопрос на собеседовании и решил не парить голову. Но судя по ответам, тут только много весёлых ребят, которым нечем было занять пятничный вечер :)



    Практические примеры:
    • Проверка валидности URL, имейла, чисел, даты, времени
    • Поиск URL, email, дат, времени в заданном тексте
    • Удаление HTML тегов или иных шаблонных фрагментов, не несущих ценности
    • Обрамление URL, имейла, числа, даты, времени дополнительными HTML тегами, к которым позже с помощью JS добавляются виджеты URL, email, календарь. Например - открыть URL в другом окне, добавить в календарь событие на дату
    • Разбиение строки на части с замысловатым разделителем
    • Работа различных шаблонизаторов основана на замене регулярных конструкций с помощью preg_replace_callback. Например {{ var }} -> <?php echo $var ?>
    • Маршрутизация URL в серверных фреймворках - какой код выполнить в зависимости от URL. Например если на сервер пришёл запрос /admin/user/edit/1 - то выполнить код из модуля Admin класса UserController метода editAction с входным параметром "1"

    Ответ написан
    Комментировать
  • Как выполнить данный запрос корректней?

    amelihovv
    @amelihovv
    Фулстек веб разработчик
    Stream::with(['user' => function ($query) {
      return $query->select(['one', 'two']);
    }])->find($id);
    Ответ написан
    Комментировать
  • Как осуществить продолжение/перезапуск работы скрипта JS при отсутствии переменной?

    @RidgeA
    проверить статус ответа было бы неплохо.
    Если не ошибаюсь
    response.statusCode
    Ответ написан
    Комментировать
  • Как дописать скрипт?

    thewind
    @thewind
    php программист, front / backend developer
    повесить на click
    $(this).siblings('.color-viewer-item').removeClass('img-big');
    $(this).toggleClass('img-big');
    Ответ написан
    3 комментария
  • Как лучше соединить 2 Laravel-приложения?

    maddog670
    @maddog670
    Создать одно апи с функциями для заказчиков и исполнителей. Одна база, одно апи для всех.
    Зачем городить велосипеды, а потом разработчикам поддерживай и ищи где какая база, обновляй ларавел.
    Как по мне лишние телодвижения они никчему
    Ответ написан
    Комментировать
  • Как подключить функцию в nodeJS, которая экспортируется в модуле как export default ()=>{}?

    @RidgeA
    Вроде не сложно посмотреть, что экспортится. Или console.log уже не работает?
    И еще не сложно посмотреть, что бабель начудил с файлом.

    Если не ошибаюсь, надо так
    const fn = require('./module_after_babel.js').default;
    Ответ написан
    4 комментария
  • Как пробросить контейнер с mysql к контейнеру с веб сервером?

    Xuxicheta
    @Xuxicheta
    инженер
    Вот у вас же написано в описании сервиса web
    links:
    - db

    ####
    Более правильно и наглядно было написать
    links:
    - db:db
    )
    ####

    это значит кто контейнер сервиса "db" для сервиса "web" будет доступен по адресу db
    localhost внутри контейнера укажет на сам этот контейнер, айпи хоста на сам хост. Конечно по айпи хоста можно добраться до базы, поскольку проброшен порт (что и делает ваш mysql workbench), но видимо докер добавляет это правило iptables только для внешних сетей.
    Ответ написан
    Комментировать