• Подробнее про блокировки и в laravel в частности?

    VGrabko
    @VGrabko
    Golang, Php, Js
    он и так не добавит. протокольная бд же
    Ответ написан
    4 комментария
  • Как сделать сайт с горизонтальной прокруткой?

    Есть простой и проверенный способ: делаешь его как обычный сайт, а потом такой ОПА и поворачиваешь его на 90deg:

    .wrap {
      transform: rotate(90deg);
    
        > * {
            transform: rotate(-90deg);
        }
    }
    Ответ написан
    3 комментария
  • Видео монтаж, с чего начать?

    @st_rapon
    Adobe After Effects - программа больше для создания эффектов
    Adobe Premiere Pro - программа больше для монтажа - и то, и то использовали для некоторых голливудских фильмов. Поищи по ним уроки.
    Также, потом придётся научиться работать программами для 3D моделирования (3D MAX, Maya)
    Ответ написан
    2 комментария
  • Как преобразовать картинку в base64?

    @Ring-lang
    Если в вашей задаче не требуется писать код JavaScript, то можно использовать Notepad++

    - перетащите изображение в программу:
    046e6441c1194b45a7b4650438f8ae55.png
    - Edit --> Select All или (Ctrl+A)
    - затем: Plugins --> MIME Tools --> Base64 Encode
    bc82f841fb7c427f8c1d4c1981b681b7.png
    - в результате код image выглядит таким:
    9a80ee1a0a8548a48d73d07c4e917f1d.png
    - добавьте
    <img src="data:image/jpg;base64,Тут код картинки" />
    к предыдущему коду.
    - результат:
    <img src="data:image/jpg;base64,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" />
    Ответ написан
    3 комментария
  • Как исключить использование аккаунта на сайте несколькими пользователями?

    xmoonlight
    @xmoonlight
    https://sitecoder.blogspot.com
    ОЙ, да как 2 пальца)
    1. Средняя взвешенность периодики заходов.
    2. Средняя взвешенность кол-ва уникальных IP-адресов (+подсетей) и User-Agent на один аккаунт за равные промежутки времени после регистрации, относительно других.
    3. Отклонение от суммарных показателей более, чем в 2 раза - бан. (условия прописываем в оферте заранее!)
    Профит!
    Ответ написан
  • Как исключить использование аккаунта на сайте несколькими пользователями?

    @Vaavaan
    Сайт получает деньги только за разовую регистрацию пользователя?
    Регистрируй с телефоном

    И чтобы использовать скидку, человек должен будет получить СМС (и сказать его содержимое тому человеку которые ему физически предоставляет скидку).

    На самом деле - это хорошо, что передают аккаунт. Это значит начал работать сарафан.
    Ответ написан
    2 комментария
  • Как исключить использование аккаунта на сайте несколькими пользователями?

    gbg
    @gbg
    Любые ответы на любые вопросы
    Все это бессмысленно, знаете почему?
    -Привет, у меня есть аккаунт на Х, давай, я тебе куплю что надо, у меня скидка 666%
    -О, ништяк, покупай!
    Ответ написан
    9 комментариев
  • Есть ли генератор статических сайтов из markdown страниц?

    Machinez
    @Machinez
    В jekyll вы можете сами выбрать с каким интерпретатором работать, по умолчанию это kramdown
    А вообще статических генераторов огромное количество
    Настоятельно рекомендую посмотреть в сторону metalsmith - простой в освоении, хорошая скорость, модульность и гибкость в отличии от jekyll. По умолчанию работает с md файлами (точней по умолчанию он ни с чем не работает, вы сами определяете как и что он будет генерировать с помощью плагинов )
    wintersmith тоже не плох
    Ответ написан
    1 комментарий
  • Как убрать возможность просмотра фильмов на компьютере?

    @oni__ino
    Как бы вы не старались, люди найдут как обойти. Принесут свой portable плеер или браузер с установлеными плагинами: сам так делал, ничего проще чем обмануть админов ;-) Можно пустить интернет только через прокси-сервер, и на стороне прокси делать такие ограничения. Ну файлы больше 20мб нельзя скачивать или там еще что-нибудь придумать. Но это борьба с ветром. И с людьми которые не хотят работать.
    Ответ написан
    Комментировать
  • Какую CMS использовать для проекта?

    kumaxim
    @kumaxim
    Web-программист
    Бери ту CMS, которую ты сам лучше всего знаешь. Сделал ты 50 сайтов на Wordpress - бери его и не думай, действуй.

    Очень много функционала, например, лента новостей, обратная связь, галлерея, покрывает любая CMS + пару плагинчиков, возможно. Часть функционала, например, экспорт/импорт из xls в любом случае тебе нужно будет руками дописывать.

    Отдельно меня смущает пункт про систему тикетов... Есть же, например, omnidesk, который позволяет вести централизовано всю переписку по электронной почте, с назначением ответственных, контролем хода исполнения и т.д. Для Joomla я похожий плагин точно видел, только названия не помню.
    Ответ написан
    Комментировать
  • Можно ли заставить скачанный файл автоматически запуститься?

    @generalx
    Системный администратор
    так при скачивание файла каждый браузер спрашивает у пользователя сохранить или запустить, что вы еще хотите сделать?
    +1 ответу Александр Булгаков
    Ответ написан
    3 комментария
  • Что значит "Write failed: success"?

    jcmvbkbc
    @jcmvbkbc
    "I'm here to consult you" © Dogbert
    Что значит такой вывод? Из-за чего он возникает?

    Значит, что операция была неуспешной, но код ошибки был обработан неправильно.
    Чаще всего такое возникает при работе с интерфейсами использующими errno -- библиотекой C или POSIX, из-за того, что после ошибочной функции выполняется ещё как минимум одна функция меняющая errno, которая отрабатывает успешно.
    Ответ написан
    2 комментария
  • Как работает 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 комментарий
  • За счет чего достигается такой высокий уровень сжатия?

    dimonchik2013
    @dimonchik2013
    non progredi est regredi
    а где вы там файлы увидели?
    там же образ диска: посмотрите на размер Debian - 247Mb, вполне себе к 160Mb могут сжаться
    Ответ написан
    1 комментарий
  • Есть ли смысл посылать сообщение только определенным пользователям, используя socket.io?

    @catHD
    Главное что бы у зрителя не было информации с помощью который он мог бы влиять на игровой процесс (сообщать игроку инсайдерскую информацию).

    Т.е зритель может просто писать в зрительский чат положение/состояние противника, а любой игрок сможет это читать. Но это уже больше логика самого игрового процесса.

    Забивания трафика минимальное.
    Ответ написан
    5 комментариев
  • Хороший туториал по Selenium?

    EreminD
    @EreminD Автор вопроса
    Кое-что умею
    Короче начать следует с https://habrahabr.ru/post/178321/
    Оттуда уже видно будет
    Ответ написан
    3 комментария