March 3rd, 2021

old rover

Прошлый март и колено

Перечитывал свои записи за март прошлого года. Тогда только-только начался первый локдаун. Никто не знал, насколько опасна эта китайская зараза, все смотрели на Италию, что у них там творится с их чмоками, обнимашками и горнолыжными курортами, и не хотели, чтоб приходилось проводить триаж (медицинскую сортировку «в реанимацию/в палату/домой отлёживаться/в морг») в приёмных отделениях больницы, так что сразу всё закрыли.

Было интересно, все были взволнованы и тонизированы тем, что происходит нечто необычное, и даже не в новостях по телевизору, а прямо здесь и сейчас. Я чуть ли не каждый день писал «430 заражённых! Плюс 90 за вчера! Мы все умрём из-за этой китайской заразы!». Можно сравнить: прошёл год, 1269058 подтверждённых случаев, 154580 актуально больных, плюс 16642 за вчера, мне как-то уже стало более пофиг. Привык.

Продолжает беспокоить левое колено. Ходить, стоять, сидеть и лежать не мешает, а на эллиптическом тренажёре заниматься мешает. Переживаю и расстраиваюсь, что без занятий на нём все мои успехи по сбросу веса пойдут прахом (обратятся в жир). Вот, к примеру, вчера не занимался, зато жрал. С утра масса тела составляет 83 килограмма — за три дня локдауна я потолстел уже на целый килограмм!

Оригинал записи http://blog.axshavan.cz/2021/03/blog-post.html
old rover

Заметка про джаваскрипт

Больше часа потратил всяким гугленгием и экспериментами, и в итоге всё равно пришлось придумывать обходной маршрут. Проблема такая. Есть некий кусок джаваскрипта...
function () {
    ...
    function azaza515(obj) {
        ...
    }
    
    function azaza520(obj) {
        ...
    }
    
    function init(parameter) {
    	...
        var a = 'azaza' + parameter; // короче, как-то динамически собирается строка с именем функции
        // которую надо как-то вызвать из области видимости уровнем выше, но не глобальной
        
        var f = new Function(a + "()"); // не работает, потому что ищет в глобальной области видимости
        window[a](); // не работает по той же причине
        ...
        
        azaza520(); // естественно, работает. А чего б не работать-то
    }
}

Так и не смог такую штуку сделать. Вариант switch (parameter) { case ... } как-то уж очень сильно пахнет карри - там, может, десятки этих azaza-функций будут. В итоге сделал их свойствами объекта:
function () {
    ...
    
    var jopa = { 
        azaza515: function(obj) {
            ...
        },
        azaza520: function(obj) {
            ...
        }
    }
    
    function init(parameter) {
    	...
        var a = 'azaza' + parameter;
        ...
        if(jopa.hasOwnProperty(a)) jopa[a](); // так работает
    }
}

А в итоге-то, можно вызвать в джаваскрипте функцию из внешней области видимости, но не глобальной, если её имя хранится в строке?


UPD: Вариант во всеми так ненавидимом и презираемом PHP безо всякого eval():
function a() {
    function foo() {
        echo "foo\n";
    }
    function init() {
        $f = "foo";
        $f(); // несколько попроще конструкция, не правда ли?
    }
    init();
}
a();


Оригинал записи http://blog.axshavan.cz/2021/03/govno-kakoeto.html