• Как правильно открыть RTSP поток с камеры в OpenCV?

    @zebox Автор вопроса
    Вопрос решен!
    Нужно было выполнить Build->Install после компиляции.. и подключить папку с новой сборкой)
    Ответ написан
    Комментировать
  • Редактирование и удаление элементов вложенного массива в MongoDB на Go?

    @zebox Автор вопроса
    Вопрос решен!
    Возможно через костыль (т.к. наверное можно было реализовать через $map или $filter), но в итоге все работает как нужно.

    Удаление:
    //выбираем документ и устанавливаем на него курсор.
    colQuerier := bson.M{"user_id": "123", "categories": bson.M{"$elemMatch": bson.M{"category_name": "entertainment", "tags": bson.M{"$elemMatch": bson.M{"list_name": "tvshow"}}}}} 
    
    //удалаем элемент вложенного массива использя оператор проекции
    change := bson.M{"$pull": bson.M{"categories.$.tags": bson.M{"list_name": "tvshow"}}}
    
    err = c.Update(colQuerier, change)


    Редактироваие:
    Т.к. оператор "$" можно использовать только для одного массива, то необходимо изначально найти индекс основного массива, а после выполнить запрос с явным указанием индекса элемента для выборки вложенного документа (массива).

    //создаем пустой интерфейс для получения данных агрегации
    var resp interface{}
    
    //Используем механизм агрегации данных с проекцией для получения индекса основного массива
    pipe := c.Pipe([]bson.M{{"$match": bson.M{"user_id": user_id}}, {"$project": bson.M{"_id": 0, "matchedIndex": bson.M{"$indexOfArray": []string{"$categories.category_name", "entertainment"}}}}}).One(&resp)
    
    //проекция возвращает такую структуру  map[matchedIndex:0], где 0 соответсвующий индекс элемента
    //Создаем тип для проекции
    var index map[string]int
    
    //Преобразуем пустой интерфейс в тип данных предоставляемый нашей проекцией
    byteData, _ := json.Marshal(resp)
    err = json.Unmarshal(byteData, &index)
    
    //Преобразовываем индекс в строку
    i := strconv.Itoa(int(index["matchedIndex"]))
    
    //Выбираем документ и устанавливаем на него курсор.
    colQuerier := bson.M{"user_id": user_id, "categories." + i + ".tags": bson.M{"$elemMatch": bson.M{"list_name": "tvshow"}}}
    change := bson.M{"$set": bson.M{ "categories." + i + ".tags.$.list_name": "serials"}}
    
    //Изменяем данные
    err = c.Update(colQuerier, change)


    Может мой способ кому-то поможет
    Ответ написан
    Комментировать
  • Как обновить данные в блоках полученные от разных web-сервисов на одной странице используя JS?

    @zebox Автор вопроса
    Однако сделал по другому...

    В сервисе реализовал выгрузку данных в firebase, а через Angular сделал их биндинг при помощи ng-repeat.
    Все работает идеально, без таймеров и множественных сервисов.

    Всем спасибо!
    Ответ написан
    Комментировать
  • Как реализовать работу сетевого приложения через proxy-списки?

    @zebox Автор вопроса
    Спасибо за ответы!
    Выбрал VPS.
    Ответ написан
    Комментировать
  • AngulaJS + Firebase авторизация (не могу понять реализацию)?

    @zebox Автор вопроса
    Задачу с проверкой авторизован пользователь или нет решил следующим образом:
    var isAuth;
    routerApp.factory('authFactory',['dataService',function(dataService){
    
    var authFactory={};
    var a;
    	authFactory.isLogin=function(){ ref.auth().onAuthStateChanged(function(user) {
            if (user) {
                // User is signed in.
                a=true;
               } else {
                // No user is signed in.
                a=false;
              
            }
            console.log(a+" ds "+dataService.isAuthed)
    
        });
        return a;
    }
    return authFactory;
    }]);
    
    routerApp.run(['authFactory',function(authFactory){
    isAuth=authFactory.isLogin();
    
    }]);


    Осталась последняя проблема... скрывать не нужные элементы.. ng-show не срабатывает, точнее срабатывает но как-то не так).
    <body ng-app="routerApp">
    
    <!-- NAVIGATION -->
    <div class="container">
    <section ng-controller="CheckCtrl as Chkctrl" >
    <nav class="navbar navbar-inverse" role="navigation" >
        <div class="navbar-header" >
            <a class="navbar-brand"  ui-sref="#">Router + {{isAuth.isAuthed}}</a>
        </div>
    
      <ul class="nav navbar-nav">
            <li ng-show="btnShow()"><a  ui-sref="home">Home</a></li>
            <li ng-show="!btnShow()"><a  ui-sref="login">Login</a></li>
             <li ng-show="btnShow()"><a  ui-sref="logout">Logout</a></li>
             <li><a  ui-sref="auth">Auth</a></li>
              <li><a  ui-sref="check">Check</a></li>
        </ul>
    </nav>
    
    <div >
      <button type="submit" class="btn btn-default"  ng-click="btnShow()">ВХОД</button>
      
    <h2 ng-show="!btnShow()">Please Login {{btnShow()}} </h2>
    </div>
    </section>

    код контроллера:
    routerApp.controller('CheckCtrl',['$scope','isShow','dataService',function($scope,isShow,dataService){
    
    	console.log('3:In CheckCtrl');
    	$scope.isAuth=dataService;	
    	var user = firebase.auth().currentUser;
    	//console.log(user.uid);
    	console.log(dataService.isAuthed);
    	this.btnShow=function(){
    		
    		console.log("in this "+isShow.checkAuth());
    		return isShow;
    
    	}
    	$scope.btnShow=function(){
    		console.log("in scope "+isShow.checkAuth());
    		return isShow;
    	}
    }]);


    модуль isShow возвращает правильное значение, в консоль тоже выводиться верное значение...
    Но ng-show отрабатывает всегда как TRUE.
    Не могу понять почему...

    UPD:
    Вопрос решил! Проблема была в

    return isShow
    нужно было возвращать
    return isShow.checkAuth()
    Ответ написан
    Комментировать