• Терминал для сайта бинарных опционов?

    @rPman
    Из открытых проектов я знаю только https://github.com/StockSharp/StockSharp
    терминал открыт, бизнес модель разработчика - продажа и поддержка коннекторов

    Там вроде бы есть тестер стратегий, вполне возможно что твоя задача полностью на нем может быть решена.

    p.s. а так гуглится приличное количество торговых терминалов на опенсорс,

    но что то мне говорит разбираться будет дольше чем запилить что то готовое, тебе же не нужно что то многофункциональное, достаточно графика и пары кнопок?

    На рынке криптоэкономике проекты обычно используют библиотеку от tradingview, там есть как опенсорс упрощенная версия так и проприетарная многофункциональная.
    Ответ написан
    Комментировать
  • Оператор clone в php: как работает?

    Если разобраться, то все просто.

    Метод __clone, как уже писали ранее, вызывается ПОСЛЕ клонирования объекта. До его вызова php создает "поверхностную" копию объекта. Это значит, что если в одном из свойств клонируемого объекта хранится другой объект, то php копирует в новый объект его ссылку. После этой операции $original->address и $clone->address указывают на один и тот же объект. (пример кода ниже).

    Если нам нужно клонировать какое-то свойство-объект, то мы можем сделать это в методе __clone. Мне привычнее воспринимать его как коллбэк. В этом методе $this - это клон (новый объект).

    Теперь вспомним то, что php при присваивании выполняет сначала ПРАВУЮ часть операции, а затем левую.
    В данном случае это значит: "Эй, интерпретатор, возьми и клонируй то, что лежит у меня в поле adress, потом возьми ссылку на этот объект, и запиши мне в поле address"

    class Person {
      public function __clone() {
        $this->address = clone $this->address;
      }
    }
    
    $original = new Person();
    $clone = clone $original;
    Ответ написан
    Комментировать
  • На собеседовании сказали, что не все функции - замыкания. Так ли это?

    insighter
    @insighter
    -First time? - Huh? (C#, React, JS)
    Очень упрощенно - замыкание это захват локальных переменных другой функции, это блокирует освобождение памяти, которую они занимают.
    У тебя в примере просто глобальная функция.
    Ответ написан
    4 комментария
  • Есть ли особенности работы Doctrine в долгоживущих приложениях?

    Maksclub
    @Maksclub Куратор тега PHP
    maksfedorov.ru
    Как такое может быть?

    Если вы достаете сущность по id, то она загружается один раз и потом не обращается к БД, следя за изменениями сущности из приложения
    Предлагаю очищать EM после каждой обработки задачи через $em->clear()

    Sometimes you want to clear the identity map of an EntityManager to start over. We use this regularly in our unit-tests to enforce loading objects from the database again instead of serving them from the identity map. You can call EntityManager#clear() to achieve this result.
    https://www.doctrine-project.org/projects/doctrine...


    Чтение можно в обход делать, изменение сущностей лучше не делать в обход EM

    Консьюмеру не хватате параметра какого - то?

    Он считает, что с сущностью вы работаете из приложения, а не в обход
    Ответ написан
    1 комментарий
  • Как перенести куки через nginx?

    shurshur
    @shurshur
    Сисадмин, просто сисадмин...
    Это вообще-то не к nginx вопрос. Решение о том, какие куки принимать в рассмотрение и передать в запросе к тому или иному домену, принимает браузер, и он должен это делать в соответствии с RFC 6265 (не путать с устаревшими RFC 2109, 2965, там есть отличия).

    Если коротко, то sub.domain.com может поставить куку как на sub.domain.com, так и просто на domain.com (в этом случае она будет также действовать на все поддомены одного уровня с sub.domain.com). Но domain.com не может поставить куку на домен com, потому что в домене должна быть минимум одна точка (такая защита).

    Для экспериментов можно поиграться с куками вот в этой песочнице с субдоменами: https://scripts.cmbuckley.co.uk/cookies.php и посмотреть
    Ответ написан
    Комментировать
  • Как работает git lfs?

    @aol-nnov
    > Прошу помощи
    помогаю разглядеть суть. дешево. оптовикам скидки

    remote: error: File img/RazerCortexSetup_8.0.104.420.exe is 151.63 MB; this exceeds GitHub's file size limit of 100.00 MB
    Ответ написан
    7 комментариев
  • Добавлять ли virtualenv в git?

    @Stqs
    senior software developer
    Частенько бывает что часть пакетов нужна при разработке и не нужна на продакшене. И наоборот. Поэтому желательно бы еще разделять requirements для разработки и для продакшена.
    Файлы с requirements могут включаться один в другой. Таким образом обычно зависимости можно разделить на 3 отдельных файла.
    Например:
    reqs/
    - common.txt
    - prod.txt
    - dev.txt

    common.txt будет содержать все обязательные общие зависимости. Пример с потолка:
    Django==1.8.5
    mysql-python==1.2.5


    dev.txt будет содержать пакеты специфичные только для разработки но включая common. Пример опять же с потолка:
    -r common.txt
    ipyhton
    ipdb
    django-debug-toolbar==1.4


    prod.txt тоже будет включать common но так же содержать вещи которые на продакшене обязательны а в Вашем локальном окружении не нужны вовсе:
    -r common.txt
    gunicorn==19.4.1
    whateverelse=1.0.0


    соответственно когда мы собираемся разрабатывать мы устанавливаем зависимости так
    pip install -r reqs/dev.txt
    в продакшене
    pip install -r reqs/prod.txt
    Ответ написан
    Комментировать
  • Добавлять ли virtualenv в git?

    idegree
    @idegree
    Senior Workaround Developer
    Лучше писать зависимости в requirements.txt и уже этот файлик добавлять в git.
    Пример файла (можно с указанием версий через ==, можно без):
    Django==1.8.5
    django-flat-theme==1.1.1
    mysql-python==1.2.5
    gunicorn==19.4.1
    pytz==2015.6
    python-memcached==1.57
    django-debug-toolbar==1.4


    При клонировании репозитория на другой компьютер или сервер выполните (предварительно создав и активировав нужное виртуальное окружение):
    $ pip install -r requirements.txt
    Таким образом, вы разом установите все необходимые пакеты.
    Ответ написан
    3 комментария
  • Клиент WebSoket на php - пример кода?

    Stalker_RED
    @Stalker_RED
    Ну вот например: https://github.com/ratchetphp/Pawl
    Прям в первом же примере то что вы просите. только close() уберите.

    А нашел я его вот так, внезапно
    Ответ написан
    Комментировать
  • Простым языком о замыканиях?

    bingo347
    @bingo347 Куратор тега JavaScript
    Crazy on performance...
    1. Для чего замыкание существуют?
    Для инкапсуляции данных.
    В ООП есть модификаторы доступа (private, protected), которые закрывают доступ к данным извне класса, но позволяют обращаться к ним из методов.
    В ФП для этой задачи используют замыкания, закрывая данные внутри функции. Из вне данные недоступны, но вложенные функции имеют к ним доступ.

    2. В каких условиях они создаются?
    Когда вложенная функция обращается к переменным внешней функции.

    Хоть и просили без примеров, но на примере показать проще:
    // makeCounter - внешняя функция
    function makeCounter(initialValue) {
      var value = +initialValue || 0;
      // counter - внутренняя функция
      // она использует переменную value из внешней функции
      // что-бы это было возможным, для counter создается замыкание,
      // в котором хранится переменная value
      // переменная initialValue функции counter не нужна, поэтому ее можно "забыть"
      return function counter() {
        return value++;
      };
    }
    
    // у нас 3 экземпляра функции counter
    var counter1 = makeCounter();
    var counter2 = makeCounter();
    var counter3 = makeCounter(100);
    // и для каждой есть своя переменная value
    console.log(counter1()); // 0
    console.log(counter1()); // 1
    console.log(counter2()); // 0
    console.log(counter1()); // 2
    console.log(counter3()); // 100
    
    // а вот получить как-то напрямую переменную value мы не можем
    // инкапсуляция нам не дает поломать данные
    Ответ написан
    Комментировать