• Есть ли открытое API для получения информации о фильмах/сериалах?

    kshnkvn
    @kshnkvn
    yay ✌️ t.me/kshnkvn
    TMDb API
    Я считаю - лучше поздно, чем никогда
    Ответ написан
    Комментировать
  • Что вызывает ошибку net::ERR_CONNECTION_REFUSED?

    @z0ddak Автор вопроса
    Мордор напоминает о себе
    Ошибка найдена. Решилось всё:
    --
    1. заменой опции origin на сервере (CORS): с localhost:4200 на http://<мой домен>.
    2. перенастройкой портов: прослушиваемый порт 8080 был открыт, но занят другим процессом. Установил другой порт для прослушивания на сервере и повторил его на клиенте.
    --
    Все заработало. Всем спасибо...
    Ответ написан
    Комментировать
  • Возможен ли автологин/логаут скрипт для Spotify?

    @itsimple Автор вопроса
    Пробую использовать Spotipy. Но в связи с незнанием Пайтона упёрся в тупик - прошу помощи.
    Итак:
    Собственно скрипту надо авторизоваться: ссылка на вики Спотипай, и если я правильно понял - этой авторизации будет достаточно для продления срока использования программы на 2 недели.
    Попробовал запустить код из примера по ссылке выше, коду не хватает данных (SPOTIPY_CLIENT_ID,
    SPOTIPY_CLIENT_SECRET, SPOTIPY_REDIRECT_URI), данные эти получил на сайте Спотифая, но вставив их в скрипт(по примеру из ссылки выше) не получил ожидаемого результата. ЧЯДНТ, подскажите?
    Ответ написан
    Комментировать
  • Позиционирование элементов bootstrap 3?

    @green176 Автор вопроса
    победил вот так, может кому понадобится
    <div class="row">
      <div class="col-md-5 col-md-push-7" style="background-color:red;height:500px">
    
      </div>
      <div class="col-md-7 col-md-pull-5" style="background-color:green;height:500px">
      </div>
    </div>

    992c4b0d2c074146b02534d234be0cef.png5a8ee6f1bfbc4fdc9d9eadd2bfd5f946.png
    Ответ написан
    Комментировать
  • Какой фрэймворк выбрать Yii 2 или Symfony 2?

    IvanCher
    @IvanCher
    Мысли шире
    Симфонисты не работают с yii2 и не до конца понимают о чем пишут :)
    Я скажу так: оба фреймворка на высоте, по возможностям одинаковы, но подходы очень разные.
    Объективно скажу так: на yii2 не получится запускать отдельные модули без запуска всего приложения, тут у симфони2 огромный плюс. Так же у симфони более классные консольные команды для генерирования каркасов, мне больше нравится, чем gii(но дело вкуса). Но по факту большинство сильных сторон симфони не оправдывается в связи с высоким порогом вхождения. Найти хорошего симфони программиста намного сложнее, чем найти его на yii2. Поэтому взависимости от бюджета и масштаба проекта можете выбирать. Симфони2 - это больше уровень корпораций, yii2 более простой при практчески том же функционале.
    Если знаете симфони2, то лучше подтяните его. Yii2 изучить намного проще, намного всё прозрачнее внутри работает, там Вам хватит пару вечеров, чтобы пройтись по исходникам и всё для себя понять как изнутри как работает.
    Ответ написан
    7 комментариев
  • Каким образом и где определяется свойство isNewRecord класса BaseActiveRecord в Yii2?

    @SilverSlice
    Сергей Протько всё верно описал. Свойство _oldAttributes используется для реализации dirty attributes.

    • При выборке данных, например методом findOne(), строка из БД преобразуется в объект AR методом BaseActiveRecord::populateRecord(). В значение свойств _attributes и _oldAttributes записываются данные, полученные из БД, в виде ['columnName' => 'value'].

    • При установке атрибутов ($customer->name = 'James') магический метод BaseActiveRecord::__set() модифицирует свойство _attributes.

    • При сохранении записи метод BaseActiveRecord::updateInternal() получает только измененные атрибуты (сравнивая свойства _attributes и _oldAttributes), чтобы обновить в БД лишь нужные поля.

    • По умолчанию свойство _oldAttributes равно null. При создании нового объекта ($customer = new Customer()) оно не изменяется, поэтому на основе его и определяют, является ли запись новой или нет.

    Ответ написан
    1 комментарий
  • Чем отличаются понятия функции, процедуры и метода в программировании?

    @D3lphi
    Функция - подпрограмма, выполняющая какие-либо операции и возвращающая значение.
    Процедура - подпрограмма, которая только выполняет операции, без возврата значения.
    Метод - это функция или процедура, которая принадлежит классу или экземпляру класса.
    Ответ написан
    5 комментариев
  • Как сохранить плагины sublime text 3?

    Taraflex
    @Taraflex
    Ищу работу. Контакты в профиле.
    Создаем в гугл/яндекс/дропбокс диске папки User и Settings
    Копируем в них содержимое %appdata%\Sublime Text 3\Packages\User и %appdata%\Sublime Text 3\Settings соответственно. (на линуксе вместо %appdata% используйте ~/.config/)
    Удаляем оригинальные папки и создаем символические ссылки на ново-созданные.
    Проделываем аналогично на всех системах.
    Теперь при запуске packagecontrol будет сам подкачивать плагины установленные на других системах.
    ВНИМАНИЕ! Не пытайтесь синхронизировать остальные папки, все сломается. Ибо некоторые пакеты отличаются для linux/windows/mac систем. Установку пакетов оставляем на совесть packagecontrol
    Ответ написан
    2 комментария
  • Какое расширение Firefox позволяет сохранять все открытые вкладки в одном окне?

    @wapat
    Onetab - можно сохранять и восстанавливать вкладки
    Ответ написан
    Комментировать
  • Как решить проблему с окончанием строк Git + phpStorm?

    EugeneOZ
    @EugeneOZ
    Поставьте плагин Webmaster (в списке плагинов поиском), там есть такая штука.
    При установке гита под винду, ему можно задать, как быть с EOL. Выберите второй вариант.
    Ответ написан
    Комментировать
  • Почему я добавляю в .gitignore файлы, а их все равно отслеживает?

    JimmDiGreez
    @JimmDiGreez
    Full-stack Developer
    Потому что они уже были в индексе.
    https://git-scm.com/docs/git-rm#git-rm---cached
    git rm --cached
    позволяет убрать файлы из индекса, соответственно гитигнор на них подействует.

    git rm -rf --cached ios/build например.
    Поясню.
    -r - рекурсивно пройтись по заданому каталогу.
    -f - чтоб не ругался ни на что.
    Запись -rf дозволена соглашениями.
    --cached - удаление только из индекса (не самих файлов).
    ios/build - пусть к папке, в которой эту экзекуцию провести. (можно так же полный путь записать)

    package-lock.json кстати оставь.
    Ответ написан
    7 комментариев
  • CSS как выбрать родительский элемент, зная дочерний

    Serezhka
    @Serezhka Автор вопроса
    Спасибо, ребята, за помощь.
    Действительно нужно было именно зная дочерний, добраться до родительского, потому что к дочерним проставляются id, а к родителям нет. И к некоторым родителям нужно добавлять уникальные классы.
    Хотелось бы именно через CSS, потому что через jquery я бы также всем родителям проставил id.
    Но большое спасибо за помощь!
    Вы мне очень помогли.
    С уважением.
    Ответ написан
    Комментировать
  • Как сделать замену текста в placeholder через промежуток времени?

    @glenean
    Добавьте аттрибут id к input
    <input class="input-seach" id="input-seach" type="text" placeholder="бла бла бла" >

    Для чистого javascript
    setTimeout(function(){
        document.getElementById('input-seach').placeholder='новый текст';
    }, 3000);

    Для jQuery
    setTimeout(function(){ 
        $('#input-seach').attr('placeholder','новый текст');
    }, 3000);
    
    //или без id, только по классу .input-seach:
    
    setTimeout(function(){ 
        $('.input-seach').attr('placeholder','новый текст');
    }, 3000);
    Ответ написан
    4 комментария
  • Как работает this jquery?

    @igor9alive
    $(this) в данном примере содержит элемент, на котором произошел click. Т.е. непосредственно элемент.
    То есть, вот этой строкой "$(this).slideToggle(1000);" ты скрываешь элемент, по которому кликнули - $('.bg_sale span').
    Напиши вот так - $(this).find('b').slideToggle(1000);
    Таким образом в элементе this (кликнутый элемент) ты найдешь все теги b и применишь к ним метод slideToggle
    Если ничего не упустил, должно сработать
    Ответ написан
    1 комментарий
  • Знак вопроса перед параметром метода это ошибка в PHP?

    @vaajnur
    битриксоид
    Типы для параметров и возвращаемых значений могут быть помечены как обнуляемые путем добавления префикса в виде знака вопроса. Это означает, что указанные параметры и возвращаемые значения, могут быть как указанного типа, так и NULL.

    php.net/manual/ru/migration71.new-features.php
    Ответ написан
    Комментировать
  • Как работает Yii::app()?

    copist
    @copist
    Empower people to give
    1. Инициализация Yii::app()

    Смотри, в файле www/index.php такие строки
    1. $config = APP_PATH . '/protected/config/main.php';
    2. $app = \Yii::createWebApplication($config); // @var CWebApplication $app
    3. $app->run();


    При отработке строки 2 выполняется код
    1. class YiiBase {
    2. {
    3.     // ... другой код
    4. 
    5.     public static function createWebApplication($config=null)
    6.     {
    7.         return self::createApplication('CWebApplication',$config);
    8.     }
    9.
    10.    public static function createApplication($class,$config=null)
    11.    {
    12.        return new $class($config);
    13.    }
    14. }


    В строке 12 с учётом динамического связывания выполняется return new CWebApplication($config);

    Если пройти по родительским классам, то можно найти, что
    class CWebApplication extends CApplication ...

    и далее
    1. abstract class CApplication extends CModule
    2. {
    3.     // ... другой код
    4. 
    5.     public function __construct($config=null)
    6.     {
    7.         Yii::setApplication($this);
    8.         // ... и другой код
    9.     }
    10. }


    В строке 7 вызывается Yii::setApplication($this);, а если посмотреть класс Yii и его родителя YiiBase, то можно увидеть как в итоге инициализируется переменная для конструкции Yii::app()
    class Yii extends YiiBase { }

    class YiiBase {
    {
        private static $_app;
        public static function setApplication($app) // тут определяется значение self::$_app для Yii::app()
        {
            if(self::$_app===null || $app===null)
                self::$_app=$app;
            else
                throw new CException(Yii::t('yii','Yii application can only be created once.'));
        }
        public static function app() // тут можно прочитать значение self::$_app через Yii::app()
        {
            return self::$_app;
        }
    }


    Теперь понятно, что при инициализации сущности типа CWebApplication эта сущность установилась в приватную переменную YiiBase::$_app, которая доступна через вызов Yii::app()

    Это была инициализация

    2. Использование Yii::app()->module или Yii::app()->component

    Ещё раз посмотри на класс CApplication
    abstract class CApplication extends CModule
    {
        public function __construct($config=null)
        {
            Yii::setApplication($this);
    
            // ... другой код
    
            $this->configure($config);
    
            // ... другой код
        }
    }


    В методе configure($config) происходит подготовка данных, которые понадобятся позже для таких вызовов как (к примеру) Yii::app()->db

    Давай посмотрим на класс Module, в котором и реализуется логика таких вызовов
    abstract class CModule extends CComponent
    {
        public function configure($config) // сохранить всё что передали по переменным
        {
            if(is_array($config))
            {
                foreach($config as $key=>$value)
                    $this->$key=$value;
            }
        }
    
        public function __get($name) // если кто-то пытается вызвать несуществующее свойство, например Yii::app()->db
        {
            if($this->hasComponent($name)) // проверить что есть настройки или готовая сущность компоненты
                return $this->getComponent($name); // вернуть сущность компоненты
            else
                return parent::__get($name);
        }
    
        public function hasComponent($id) // проверить что есть настройки или готовая сущность компоненты
        {
            return isset($this->_components[$id]) || isset($this->_componentConfig[$id]);
        }
    
        public function getComponent($id,$createIfNull=true) // вернуть сущность компоненты
        {
            if(isset($this->_components[$id])) // если есть готовая сущность компоненты, вернуть её
                return $this->_components[$id];
            elseif(isset($this->_componentConfig[$id]) && $createIfNull)
            {
                $config=$this->_componentConfig[$id];
                if(!isset($config['enabled']) || $config['enabled'])
                {
                    unset($config['enabled']);
                    $component=Yii::createComponent($config); // создать новую сущность компоненты
                    $component->init();
                    return $this->_components[$id]=$component; // сохранить и вернуть её
                }
            }
        }
    }


    Попробуем расшифровать вызов Yii::app()->db

    Как я уже показал, Yii::app() - это сущность типа CWebApplication, а у неё нет публичного свойства $db, поэтому PHP вызывает магический метод __get() из базового класса CModule. (Посмотри в документации "магические методы")

    Итак, свойства CWebApplication->db не существует и вызывается CModule->__get('db'), далее код считает, что, возможно производится вызов компоненты.

    Метод CModule->hasComponent('db') проверяет, что ранее были заданы какие-то настройки указанной через файл конфигурации protected/config/main.php или иным способом. Если так, то то вызывается CModule->getComponent('db', ...), который вызывает Yii::createComponent($config), где $config - это найденные настройки указанной компоненты, например, параметры соединения с базой данных для компоненты db

    Посмотрим, что делает Yii::createComponent($config)
    class YiiBase
    {
        public static function createComponent($config)
        {
            // посмотри сам, тут интересно
        }
    }


    Cложный метод. Суть его в инстанциировании новой сущности какого-то класса, 5 или 6 способов. Дело в том, что этот метод CModule::createComponent() может быть вызван откуда угодно и у него куча вариантов передачи параметров.

    Итак, CModule::createComponent() создал и вернул новую сущность. И на выходе из метода CModule::getComponent() полученная сущность записывается в массив CModule->_components под именем 'db'.

    Все последующие вызовы Yii::app()->db будут проверять наличие инстанциинованной сущности в массиве CModule->_components['db'] и использовать его, если он там найден

    Заключение:

    Вызов Yii::app()->db
    А. Динамически инициализирует компоненту, по мере необходимости
    Б. Настраивает её данными, которые в частновти можно определить через файл конфигурации protected/config/main.php
    В. Инициализируют компоненту только один раз за цикл работы PHP приложения

    Надеюсь я понятно изложил механизм ленивой инициализации компонент
    Ответ написан
    1 комментарий
  • Как преобразовать объект в массив?

    vahe_2000
    @vahe_2000
    const obj = {
      0: { 0: "01.01.2019", 1: 11111.01 },
      1: { 0: "02.01.2019", 1: 22222.02 },
      2: { 0: "03.01.2019", 1: 33333.03 }
    };
    
    const result = Object.keys(obj).map((value, index) => Object.values(obj[value]));


    Object.values()
    Ответ написан
    Комментировать
  • Как преобразовать объект в массив?

    EreminD
    @EreminD
    Кое-что умею
    var a = {
       0: {0: "01.01.2019", 1: 11111.01},
       1: {0: "02.01.2019", 1: 22222.02},
       2: {0: "03.01.2019", 1: 33333.03}
    }
    
    var result = Object.values(a).map(v => Object.values(v))
    Ответ написан
    1 комментарий
  • Как преобразовать объект в массив?

    KorniloFF
    @KorniloFF Куратор тега JavaScript
    Работаю по font-end / JS
    Object.values({
    	0: {0: "01.01.2019", 1: 11111.01},
    	1: {0: "02.01.2019", 1: 22222.02},
    	2: {0: "03.01.2019", 1: 33333.03}
    }).map(i => Object.values(i) )
    Ответ написан
    Комментировать