• В чем отличие промисов от монад?

    AMar4enko
    @AMar4enko
    Promise это не цепочка вызовов. Promise (в переводе "обещание") - функция вам говорит, что в данный конкретный момент она не может вам вернуть результат, но она ОБЕЩАЕТ, что через некоторое время она вам его вернет. Или вернет ошибку. Promise это инструмент, который позволяет более-менее сносно существовать асинхронному коду.
    Ответ написан
    Комментировать
  • Как сократить расстояние между элементами?

    takovoy
    @takovoy
    web developer
    возможно дело в этом:
    width = "130px"
    к слову, код у вас "вырвиглаз", используйте .createElement и .appendChild
    Ответ написан
    1 комментарий
  • Как сократить расстояние между элементами?

    Playmore
    @Playmore
    Опытный разработчик
    Это что?!!!!!!!!! Впервые вижу чтобы верстали скриптами!
    В одном месте верстка, в другом скрипты и т.д. А это что за борщ!?
    Ответ написан
    Комментировать
  • Какие существуют способы защиты стилей CSS?

    opium
    @opium
    Просто люблю качественно работать
    мне кажется мания величия затмила ваш мозг глупейшими проблемами, вместо того чтобы код красиво оформить и выкладывать на гитхаб и делиться им, вы решили его зачем то прятать, просто задумайтесь, что хорошего вы сделали в жизни и почему не выкладываете его на гитхаб?
    Ответ написан
    11 комментариев
  • Зачем нужен байт-код?

    afiskon
    @afiskon
    Идея следующая. Берется программа, транслируется в платформонезависимый байткод. Затем под виртуальной машиной этот байткод можно запустить без изменений и под x86 Windows и под x64 Linux. То есть, программу не придется компилировать под каждую платформу отдельно. На самом деле я даже могу не знать о существовании некоторых платформ, на которых мою программу кто-то запустит. Возможно, этих платформ еще даже не существует.

    Кроме того, при обновлении виртуальной машины байткод может быть скомпилирован в более эффективный машинный код. И вообще-то даже на двух процессорах с одной архитектурой могут быть применимы очень разные оптимизации, так что платформ в действительности сильно больше, чем количество архитектур * количество ОС.
    Ответ написан
    1 комментарий
  • Зачем нужен байт-код?

    icelaba
    @icelaba
    Знаю и умею всё
    Особенность многих jit компиляторов в том что они умеют оптимизировать код на лету, используя статистику выполнения программы,
    например hotpath оптимизация считает количество попаданий в ту или иную часть программы, и генерит машинный код только для кусков кода где программа реально часто выполняется.
    Что это дает: за счет этого jit оптимизатор может разместить куски часто выполняющегося машинного кода очень близко друг к другу - так что они все целиком будут умещаться например в кэше процессора, и да - jit компилятор порой за счет этого обгоняет прекомпилированный машинный код.

    Есть еще куча оптимизаций например касающаяся языков которые поддерживают closures, как показывает практика большинство клозур используются в коде с одинаковыми переменными окружения, что позволяет не выполнять кучу работы по сохранению окружения и тп - а просто заинлайнить клозуру - другое дело что на этапе компиляции понять это невозможно, а вот на этапе выполнения сохранить hash окружения и если он не меняется то инлайнить код - легко

    Есть еще куча подобных оптимизаций которые реально помогают динамическим языкам работать почти наравне по скорости с С на некоторых задачах, яркий пример luajit

    И до кучи динамические языки зачастую невозможно заранее перенести в native код чтобы сам этот код не прератился в некорый интерпретатор байткода, вот хорошо про это написано:
    stackoverflow.com/questions/15626611/can-regular-j...

    (c# кстати нединамический поэтому для него насколько я помню была какая то тулзень для прекомпиляции в native код - но я уже лет сто ;-) не писал на c# поэтому точно не помню)
    Ответ написан
    4 комментария
  • Как в delphi писать процедуры для динамических объектов?

    svd71
    @svd71
    Если вы создаете окна одного класса, то все функции, принадлежащие этому классу будут имплементированы во все копии. Пример:
    type
     TNotepad = class(TForm) //Предок всех классов для записи блокнота
    public
      class var OnAfterCreate: TNotifyEvent; //событие, для реакции после создания 
      constructor Create(AOwner: TComponent); override; //второй возможный 
                                        //вариатнвариант
    end;
    
    TMainForm = class(TForm)
       procedure FormCreate(Sender: TObject);
    public
       procedure DoAfterCreate1(Sender:TObject); //вариант 1
       procedure  DoAfterCreate2(Sender:TObject); //вариант 2
    end;
    
    constructor TNotepad.Create(AOwner: TComponent);
    begin
     inherited;
      //варант 1
     if Assigned(OnAfterCreate) then
          OnAfterCreate(Self);
    //*1
    //вариант 2
    if Assigned(Screen.MainForm ) then
      if Screen.MainForm is TMainForm then
        TMainForm(Screen.MainForm).DoAfterCreate2(Self);
    //*2
    end;
    
    procedute TMainForm.FormCreate(Sender:TObject);
    begin
      TNotepad.OnAfterCreate := Self.DoAfterCreate1; //вариант 1
    end;
    Ответ написан
    Комментировать
  • Доменная зона .io — что я пропустил?

    vosi
    @vosi
    input/output?
    это ж как-бы основа всех основ )))
    Ответ написан
    5 комментариев