Задать вопрос
  • Как запускать nodejs сервер на VPS?

    vitali1995
    @vitali1995
    fronter-up, так не нужно же запускать сервер два раза на одинаковом порту
  • Как изменить css вложенного элемента в Angular?

    vitali1995
    @vitali1995 Автор вопроса
    Sasha Novik, понял, спасибо. Жаль, что современные технологии по прежнему держатся на костылях и копипасте.
  • Как изменить css вложенного элемента в Angular?

    vitali1995
    @vitali1995 Автор вопроса
    Тогда представим себе компонент с определённым функционалом. Начинаем проект с уникальным дизайном, в котором нужно из npm подгрузить компонент.

    Вопрос: как ему изменить оформление без необходимости влезать в компонент с целью добавления новой (используемой 1 раз) темы?

    Может, есть какой-то способ указать файл стилей при импорте? (не думаю)
  • Как распределять потоки при асинхронном программировании?

    vitali1995
    @vitali1995 Автор вопроса
    Не понимаю, зачем делать больше потоков, чем ядер, если мы используем асинхронность. В моём понимании это приводит к лишним затратам на переключение контекста, которое должно использоваться только при необходимости (если нужно остановить поток при синхронном программировании).
  • Как распределять потоки при асинхронном программировании?

    vitali1995
    @vitali1995 Автор вопроса
    Тут же пришла мысль: можно минимизировать время на синхронизацию, если добавлять в очередь сразу весь массив сообщений, который постепенно накапливается в активном потоке, а именно - в глобальном массиве этого потока. Но во время накопления может простаивать свободный поток...

    А ещё - выдавать очередному потоку сразу несколько колбэков. Например, в очереди 10 сообщений, пришёл за добавкой новый поток (1 из 4х), ему выдаётся сразу 3 колбэка. Но тут тоже возникает опасность того, что первый из них будет выполняться дольше, чем остальные 7 вместе взятые, и оставшиеся 2 будут простаивать в ожидании. Можете для большего размаха увеличить эти цифры в несколько раз.

    Жду ваши идеи и предложения.
  • Можно ли сэкономить память при копипасте?

    vitali1995
    @vitali1995 Автор вопроса
    15432, я так понял, что участки кода получится вынести, только если сохранять адрес возврата (состояние стека и регистров можно оставлять нетронутыми). Получаем 4 лишних действия: сохранить адрес, прыжок, достать адрес, прыжок - правильно?
    Но всё равно многовато. Узнал, что существуют алгоритмы сжатия исполняемого файла, частично это может решить задачу. Но единственным решением пока что вижу различное поведение (дублирование или вызов подпрограммы) в зависимости от количества операций.
    Спасибо за участие, по-размышлять было полезно.
  • Можно ли сэкономить память при копипасте?

    vitali1995
    @vitali1995 Автор вопроса
    res2001, вы немножко не в теме, повторю специально для вас:
    Использование функций - это простое решение, но не идеальное. Если требуется сократить всего несколько инструкций, дешевле будет дублировать, чем делать вызов подпрограммы.

    Если я не прав - прошу поправить. Иначе мне не нужны советы по красивому оформлению кода, мне нужно эффективное решение по скорости выполнения.

    И да, я не говорил, что контекст - это код. Я сказал, что любые данные создаются кодом, а не другими данными. Данные - это материал, из которого что-то строится, но материал - это не строитель.
  • Можно ли сэкономить память при копипасте?

    vitali1995
    @vitali1995 Автор вопроса
    15432, спасибо за пример, мы как раз обсуждаем это в комментариях к ответу ниже и там я задал такой вопрос: каким образом тело функции понимает, по какому адресу находится вершина стека?

    Ваш пример показывает прыжок в пределах одной функции, но если попытаться делать прыжок на один участок кода из разных функций, т.е. из разных контекстов, не получится ли ошибки из-за того, что общий код не будет понимать, с каким контекстом ему работать в данный момент?
    Предполагаю, что во время выполнения стек у программы всегда один... Но что, если мы имеем дело с многопоточностью?

    И ещё: если вызов подпрограммы - это просто прыжок с обработкой стека, зачем написаны оптимизаторы, которые подставляют вместо вызова методов get/set тело функции? Почему считается, что вызов подпрограммы дороже, чем например использование цикла?
  • Можно ли сэкономить память при копипасте?

    vitali1995
    @vitali1995 Автор вопроса
    res2001, комментарий ни о чём.
    Нужный контекст создается в функции передаваемыми ей параметрами.

    Контекст не создаётся параметрами. Он создаётся инструкциями процессора.

    Повторяющийся участок кода выделяете в отдельную функцию, которая должна в качестве параметров принимать всю необходимую ей для работы информацию.
    Абсолютно обычная практика.

    Уже было такое предложение в комментарии выше и это не решение задачи.
  • Можно ли сэкономить память при копипасте?

    vitali1995
    @vitali1995 Автор вопроса
    15432, простое решение, но не идеальное. Если требуется сократить всего несколько инструкций, дешевле будет дублировать, чем делать вызов подпрограммы.
  • Можно ли сэкономить память при копипасте?

    vitali1995
    @vitali1995 Автор вопроса
    Вы уловили мысль, предлагаю продолжить. Я не силён в assembler, но сейчас мне важно понять в теории, что это в принципе возможно или невозможно.

    Насколько мне известно, контекст - это набор значений в стеке, который формируется перед выполнением call. Мешает ли что-нибудь делать jmp из тела функции (в контексте) в общую область памяти? Знаю, что в С++ нельзя, но если смотреть с уровня ассемблера, то приходит мысль: ведь такой участок кода будет также работать с верхушкой стека в текущем контексте. Вопрос в том, откуда возьмётся ссылка на этот контекст во внешней области, поэтому вероятно, что эта идея недееспособна. Как в теле функции определяется, по какому адресу находится вершина активного стека?
  • Как организовать адаптивное SPA приложение?

    vitali1995
    @vitali1995 Автор вопроса
    Можно чуть подробнее? Процесс пошёл, но доходит туго
  • Как организовать адаптивное SPA приложение?

    vitali1995
    @vitali1995 Автор вопроса
    Приведите, пожалуйста, пример для моего случая. Не представляю, как можно дробить настольный экран на различные страницы, задача которого - показывать единственный компонент с древовидным списком.
  • Как исполнять пользовательские модули в песочнице?

    vitali1995
    @vitali1995 Автор вопроса
    Спасибо, никогда не использовал
  • NodeJs - с чего начать?

    vitali1995
    @vitali1995
    Иван, не знаю, наверно лучше начать с простых упражнений в браузере, затем попробовать написать небольшое браузерное приложение (например, простую текстовую игру), после этого можно уже на сервер перебираться. Это не совет, а просто предположение. Кто-то советует вообще начинать основы программирования со строго типизированных языков, таких как C или Java.
  • Как включить XDebug?

    vitali1995
    @vitali1995 Автор вопроса
    @sayber
    Параметры запуска:
    {
      // Используйте IntelliSense, чтобы узнать о возможных атрибутах.
      // Наведите указатель мыши, чтобы просмотреть описания существующих атрибутов.
      // Для получения дополнительной информации посетите: https://go.microsoft.com/fwlink/?linkid=830387
      "version": "0.2.0",
      "configurations": [
        {
          "name": "Listen for XDebug",
          "type": "php",
          "request": "launch",
          "port": 9000
        },
        {
          "name": "Launch currently open script",
          "type": "php",
          "request": "launch",
          "program": "${file}",
          "cwd": "${fileDirname}",
          "port": 9000
        }
      ]
    }

    Видимо, настройки xdebug по стандарту
  • NodeJs - с чего начать?

    vitali1995
    @vitali1995
    @Za0r
    Основы - да. Особенности ES2017, express@latest или чего-то ещё навёрстывается по документации, когда уже понятно о чём речь. Meteor в чистом виде не использовал, рекомендую связку с Angular: https://angular-meteor.com/tutorials/whatsapp2/ion...
    Хотя если автор вопроса использовал React, возможно ему больше понравится связка с Реактом.
  • Как включить XDebug?

    vitali1995
    @vitali1995 Автор вопроса
    SharkMan, спасибо за помощь, но вы зря пытаетесь меня пристыдить. Я не увидел ответов в предыдущем вопросе, возможно из-за работы модераторов. И я не настолько часто имею дело с php, чтобы изучать настройки сервера более детально, мне просто нужно разово настроить отладчик для конкретного окружения, чтобы иметь возможность вносить правки в существующие приложения.

    Да, в интерфейсе не заметил эту настройку) Теперь включил, сервер перезапустил, возникла следующая проблема: точек останова не выставлено, но при попытке открыть страницу сервер ничего не отвечает. В стеке вызовов появляется 2 запроса:
    59e4733fb0353469177654.png