• Как получить значение Y на кривой безье по X?

    @gelosoft Автор вопроса
    Frontend-developer
    Пришлось писать самому
    __getYfromXBezier (x, points) {
            for (let i = 0; i < points.length - 1; i++) {
                if (points[i].x <= x && x <= points[i + 1].x) {
                    const deltaX = x - points[i].x;
                    let k = ((points[i+1].y - points[i].y) / (points[i+1].x - points[i].x));
                    return deltaX * k + points[i].y;
                }
            }
        }
    Ответ написан
  • Как повернуть шестиугольник по меньшему углу чтобы самая длинная хорда(соединяющая противоположные точки) оказалась параллельно оси?

    @gelosoft Автор вопроса
    Frontend-developer
    const vertices = mesh.getVerticesData(BABYLON.VertexBuffer.PositionKind);
    let vectorExtreme = null;
    let length = 0;
    for(let i = 0; i < vertices.length; i += 3) {
        let vertex = BABYLON.Vector3.FromArray(vertices, i);
        let vector = BABYLON.Vector3.TransformCoordinates(vertex, this.hexagon.mesh.getWorldMatrix());
        if(!i) vectorExtreme = vector;
        vector.z = 0;
        if(vector.length() > length && vector.x > 0) {
            length = vector.length();
            vectorExtreme = vector;
        }
    }
    
    const vector1 = new BABYLON.Vector3(vectorExtreme.x, vectorExtreme.y, 0);
    const vector2 = new BABYLON.Vector3(1,0,0);
    
    let angle = Math.acos(BABYLON.Vector3.Dot(vector1, vector2) /
        (vector1.length() * vector2.length()));
    if(vectorExtreme.y > 0) {
        angle = -angle;
    }
    
    mesh.rotate(BABYLON.Axis.Z, angle, BABYLON.Space.WORLD);
    Ответ написан
    Комментировать
  • Задачник по Javascript?

    @gelosoft
    Frontend-developer
    Вышеупомянутый www.codewars.com
    А также https://www.hackerrank.com/
    С помощью этих сервисов можно не только прокачать скилл, но и получить приглашение на собеседование.
    Ответ написан
    Комментировать
  • Возможна ли переквалификация в разработчики после 30 без профильного высшего образования?

    @gelosoft
    Frontend-developer
    Вполне. Прокачать теоретический стек HTML5/CSS3 самостоятельно, к примеру на
    htmlbook.ru, JS на learn.javascript.ru, питон с помощью книжечки(может что-то есть и теоретическое в сети, но я не питонщик, не знаю).
    Затем(или одновременно) попокачиваться практически на
    https://htmlacademy.ru/
    www.codewars.com
    Сделать от двух и больше проектов(что нибудь полноценно практическое, пусть и без анимашек), залить на хостинг (может быть даже и на бесплатный, если повезет) или в гитхаб(для указания в резюме).
    Попроходить десяток технических собеседований(важен сам факт прохождения, после которого прорабатывать неотвеченые вопросы, если конечно сочтете их трендовыми). И потом улыбнется удача с какой-то попытки.

    Немного от себя, даже имея 6-летний опыт в веб сфере(и фронтом и беком), когда пришла необходимость сменить работу, я несколько собеседований проходил очень слабо, что довольно таки понижало самоценку, но как только нашелся работодатель(по моим меркам престижный, одно из информационных агенств нашей Родины) и я был принят, я понял, что не я был слаб, а предыдущие собеседования проводили коряво, проверяя не аналитические способности для реализации задачи, а память)) Если есть упорядоченное понимание и желание, то практический опыт придет быстро, если работодатель поверит в тебя.
    Ответ написан
    Комментировать
  • В IE 8 не могу при onsubmit (JS) изменить значение поля перед отправкой. В чем проблема?

    @gelosoft Автор вопроса
    Frontend-developer
    Проблема в следующем....

    На текстовом поле висит обработчик (для ie на propertychange, для остальных на input). В обработчике формы на submit происходит изменение этого текстового поля. Для всех браузеров кроме IE (я так понимаю <=8) срабатывает только обработчик формы и форма отправляется, а в IE (горячо любимый) еще и вызывается обработчик текстового поля перед отправкой. В принципе по моему мнению IE наверно все-таки правильно поступает, как бы мне это не нравилось)))
    Решилось удалением обработчика тестового поля перед изменением поля в обработчике submit'а.

    Последняя версия:
    <html>
    <body>
    <form name="nameForm">
        <input type="text" name="nameInput" onfocus="this.value = this.value"/>
        <button value="submit" type="submit">Send</button>
    </form>
    
    <script>
        (function () {
            var el = document.getElementsByName('nameInput')[0];
            var frm = document.forms['nameForm'];
    
            if (el.addEventListener) {
                el.addEventListener("input", callbackInput, false);
            } else if (el.attachEvent) {
                el.attachEvent('onpropertychange', callbackInput);
            }
    
            if (frm.addEventListener) {
                frm.addEventListener("submit", callbackForm, false);
            } else if (frm.attachEvent) {
                frm.attachEvent('onsubmit', callbackForm);
            }
    
            function callbackInput(e) {
                var valueOriginal = (e.propertyName === 'value') ? e.srcElement.value : this.value;
                var valueWithoutSpaces = valueOriginal.replace(/\D/g, '');
                var length = valueWithoutSpaces.length;
                var valueWithSpaces = valueWithoutSpaces.substr(0, length < 4 ? length : 4)
                        + ((length > 4) ? ' ' + valueWithoutSpaces.substr(4, length < 9 ? length - 4 : 4) : '')
                        + ((length > 8) ? ' ' + valueWithoutSpaces.substr(8, length < 12 ? length - 8 : 4) : '')
                        + ((length > 12) ? ' ' + valueWithoutSpaces.substr(12, length < 16 ? length - 12 : 4) : '');
                if (e.propertyName === 'value' && e.srcElement.value != valueWithSpaces) {
                    var input = e.srcElement;
                    input.value = valueWithSpaces;
                    input.blur();
                    input.focus();
                }
                else {
                    this.value = valueWithSpaces;
                }
            }
    
            function callbackForm(e) {
                if (el.detachEvent) {
                    el.detachEvent('onpropertychange', callbackInput);
                } else {
                    el.removeEventListener('input', callbackInput, true);
                }
                el.value = el.value.replace(/\D/g, '');
            }
        }())
    </script>
    </body>
    </html>
    Ответ написан
    Комментировать