• Как подсчитать количество отфильтрованных значений в Angular JS (filter)?

    Вы же не хотите грузить на фронт все 10500( а если их будет 100500) значений? Делайте это на бэке, и показывайте только то, что нужно.
    P.S.
    Чтобы получить модельку с отфильтренными записями - можно написать как-то так:
    ng-repeat="item in main.filteredKeywords = (main.keywords | filter1| fliter2|....)"
    Ответ написан
    6 комментариев
  • Как подсчитать количество отфильтрованных значений в Angular JS (filter)?

    Fesor
    @Fesor
    Full-stack developer (Symfony, Angular)
    сделайте это в директиве, подготовьте данные в контроллере и все. Не надо пытаться сделать это заведомо неудобно и не правильно (с архитектурной точки зрения).
    Ответ написан
  • Куда вписать функцию, если в Angular $resource результатом $save пришел 422 ответ (вместо 200)?

    Вам надо подтянуть знания по промисам: then вторым аргументом принимает обработчик ошибки. Еще есть метод catch, который ловит вообще все ошибки.
    Правда, я Angular не знаю, возможно, там свои кривые особые промисы.
    Ответ написан
    6 комментариев
  • Как реализовать в Angular сохранение сессии после закрытия браузера?

    @kgorozhanov
    Front-End Developer
    Попробуйте $window.localStorage, либо angular-cookies.js
    Ответ написан
    Комментировать
  • Как правильно хранить в базе данные о авторизации юзера через социальную сеть?

    @unity_ultra_hardcore
    У нас используется следующая схема таблиц:
    Table "public.social_account"
       Column    |              Type              | Modifiers
    -------------+--------------------------------+-----------
     user_id     | integer                        | not null
     network     | character varying(255)         | not null
     external_id | character varying(255)         | not null
     created_at  | timestamp(0) without time zone | not null
     updated_at  | timestamp(0) without time zone | not null
     id          | uuid                           | not null
    Indexes:
        "social_account_pkey" PRIMARY KEY, btree (id)
        "unique_social_account" UNIQUE, btree (network, external_id)
        "idx_f24d8339a76ed395" btree (user_id)
    Foreign-key constraints:
        "fk_f24d8339a76ed395" FOREIGN KEY (user_id) REFERENCES app_user(id) ON DELETE CASCADE


    То есть для каждой привязки хранится запись, в которой содержится user_id, название соцсети (google/vk/facebook/etc) и id этой соцсети (у всех произвольный формат).
    Таким образом, когда пользователь аутентифицируется через одну из этих соцсетей, сначала ищется user_id по связке external_id + network. Если user_id найден - аутентифицируем текущего пользователя как этот user_id. Если нет, получаем от соцсети email и по нему ищем пользователя в таблице пользователей. Если нашли, то создаем запись в social_account и аутентифицируем юзера. Если не нашлось ничего (первый визит), то создаем пользователя и создаем запись в social_account.
    Ответ написан
  • Как найти объект в массиве по свойству?

    Fesor
    @Fesor
    Full-stack developer (Symfony, Angular)
    Вопервых индес будет 2 а не 3
    Во вторых так как данные у вас не отсортированы, сложность алгоритма поиска в любом случае будет O(N).
    В третьих если бы данные были отсортированы по этому ключу, можно было бы применить бинарный поиск у которого сложность будет O(1 +logN). Есть еще интерполяционный поиск со сложностью O(log(log(N)) но опять же работает только с отсортированными массивами.
    Ну и последнее, 100К+ элементов это не так много.

    Все три метода: jsfiddle.net/op1jxpsm/2 на массиве из 10 000 000 элементов
    Результаты:

    Хороший для тупого перебора случай, ищем 12415
    Basic search: average=0ms, min = 0ms, max = 2ms
    Binary search: average=0ms, min = 0ms, max = 0ms
    Interpolation search: average=0ms, min = 0ms, max = 0ms

    Средний для перебора случай, ищем 3451524:
    Basic search: average=64ms, min = 62ms, max = 67ms
    Binary search: average=0ms, min = 0ms, max = 0ms
    Interpolation search: average=0ms, min = 0ms, max = 0ms

    Плохой для перебора случай, ищем 9542417:
    Basic search: average=176ms, min = 158ms, max = 182ms
    Binary search: average=0ms, min = 0ms, max = 0ms
    Interpolation search: average=0ms, min = 0ms, max = 0ms
    Ответ написан
    Комментировать
  • Как передать куки вторым запросом в cUrl?

    OAPrilepa
    @OAPrilepa
    Frontend developer
    Старый код, логинимся и получаем куки в строку:
    // Отправка POST запроса с получением печенек:
    function send_post_get_cookie($URL='', $PostData=Array(), $cookie='')
    {
        // Отсекаем пустые вызовы:
        if (strlen($URL)<=0) return false;
        // Скопировал строку из FireBug:
        $ua = 'User-Agent: Mozilla/5.0 (Windows; U; Windows NT 6.1; ru; rv:1.9.2.13) Gecko/20101203 MRA 5.7 (build 03796) Firefox/3.6.13';
        // Инициализация объекта:
        $ch = curl_init($URL);
        // показывать заголовки (в них куки):
        curl_setopt($ch, CURLOPT_HEADER, 1); 
        // не показывать тело страницы (для экономии траффика):
        curl_setopt($ch, CURLOPT_NOBODY, 1); 
        // это чтобы прикинуться браузером:
        curl_setopt($ch, CURLOPT_USERAGENT, $ua);
        // можно ставить еще вот это, если удаленный сервер проверяет:
        // curl_setopt($ch, CURLOPT_REFERER, $URL);
        curl_setopt($ch, CURLOPT_POST, 1);
        // включение полей POST в запрос:
        curl_setopt($ch, CURLOPT_POSTFIELDS, $PostData);
        // если нужны печеньки, установим:
        if (strlen($cookie)>0)
            curl_setopt($ch, CURLOPT_COOKIE, $cookie);
        // тормозим стандартный вывод:
        ob_start();
        // запускаем запрос:
            curl_exec ($ch);
            curl_close ($ch);
            // получаем заголовки в массив:
            $headers = explode("\n", ob_get_contents());
        ob_end_clean();
        // выдираем строку печенек:
        for ($i=0, $cnt=count($headers); $i<$cnt; $i++) 
            if (strpos($headers[$i], 'Set-Cookie:') !== FALSE)
                $cookie .= substr($headers[$i], strpos($headers[$i], 'Set-Cookie:')+strlen('Set-Cookie:')); 
        // и возвращаем результат:
        return $cookie;
    }


    А потом используем ее в других запросах, к примеру загружаем файл после авторизации:
    // Сохранение файла с удаленного хостинга:
    function save_get_file($URL='', $cookie='')
    {
        if (strlen($URL)<=0) return false;
        $filename = $_SERVER['DOCUMENT_ROOT'].'/upload/tmp/'.date('YmdHis_').rand(99,9999999).'.tmp'; 
        $fp = fopen($filename, 'w');
        if (!$fp)
            return false;
        else
        {
            $ua = 'User-Agent: Mozilla/5.0 (Windows; U; Windows NT 6.1; ru; rv:1.9.2.13) Gecko/20101203 MRA 5.7 (build 03796) Firefox/3.6.13';
            $ch = curl_init($URL);
            curl_setopt($ch, CURLOPT_USERAGENT, $ua);
            curl_setopt($ch, CURLOPT_FILE, $fp); // чтобы выгрузить в файл;
            if (strlen($cookie)>0)
                curl_setopt($ch, CURLOPT_COOKIE, $cookie);
            curl_exec ($ch);
            curl_close ($ch);
            return $filename;
        }
    }
    Ответ написан
    Комментировать