Ответы пользователя по тегу JavaScript
  • Как ускорить адаптацию сайта?

    riky
    @riky
    Laravel
    Бутстрап тоже можно скомпилить на 24 колонки
    Ответ написан
    Комментировать
  • На каком языке пишут шейдеры для Canvas?

    riky
    @riky
    Laravel
    учить следует opengl es 2.0
    https://ru.wikipedia.org/wiki/OpenGL_ES
    шейдерный язык
    Ответ написан
    Комментировать
  • Как создать игру для вк?

    riky
    @riky
    Laravel
    front-end - конечно js - поддержка мобильных на будущее.

    по поводу графики, если планируется svg, можете глянуть d3js - она с svg дружит и там очень легко будет сделать область с масштабированием и перетаскиванием. если навигации перетаскиванием и мастабирования по карте нету, то можно наверное вообще без канваса и svg обойтись, просто абсолютно спозиционировав нужные div со всеми постройками. обрабатывать эти же клики будет проще. да и скорость будет больше чем канвас.

    в общем подобные игры я бы пробовал делать на html + svg.
    канвас для вещей где нужны разные спецэффекты, или хоть какая то динамика, указанные вами игры каутся довольно статичными, и на канвасе сложно отслеживать по какому обьекту кликают.

    Для обмена использовать websocket в место ajax.

    конечно, по поводу websocket для игр вчера отвечал на вопрос, возиожно будет тоже интересно
    Как построить онлайн карточную игру на PHP и canvas?
    Ответ написан
  • Какова будет реакция покупателей на обфускацию javascript в шаблоне?

    riky
    @riky
    Laravel
    я бы обфусцированный шаблон покупать не стал, часто доработки самостоятельные требуются.
    к тому же обфускация (не минимификация!) замедляет время загрузки.
    для заказчиков не программистов конечно пофигу.

    а угнать если захотят все равно угонят. распаковать обфусцированный js не сложно, удалить проверку тоже.

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

    riky
    @riky
    Laravel
    если нужна гарантия 100% чтобы не утащили, то скрипт должен выполняться весь или частично на сервере (nodejs например) а на клиент только результаты вычислений. либо на сервере частичное решение.
    это подойдет если в скрипте какие то вычисления (секретные формулы)

    если скрипт для UI то это конечно не вариант.
    Ответ написан
    1 комментарий
  • Как реализовать очередь фиксированной длины?

    riky
    @riky
    Laravel
    операция unshift в js довольно дорогая
    сделал пример для тестирования pop/unshift
    https://jsfiddle.net/uzjcttj2/5/ (откройте консоль)
    заметьте что у unshift колич итераций в 100 раз меньше. если ставить больше то браузер зависнет.

    первые 3 теста - скорость создания массивов разными способами, заметьте что у unshift в 100 раз меньше элементов. видим что самый быстрый - push.

    далее 2 теста - скорость добавления/доставания элементов.
    хорошо видно что на маленьких массивах время сильно падает.

    6ой тест - скорость pop - как видим она очень хорошая.

    итого если очередь небольшая - подойдет вариант Stalker_RED

    для гигантских очередей написал свою реализацю
    используем 2 массива: из b только читаем с конца, в a вставляем и только в конец.
    то есть мы берем из конца и вставляем в конец - в js это очень быстро.

    сравнение скорости с вариантом Stalker_RED https://jsfiddle.net/wL84rr46/4/
    в обоих случаях у нас очередь из 1M элементов.
    примерно за одно и то же время (100-200мс на моем компе) первый случай делается всего 100 операции. в моем примере 10M

    a = [];
    b = []; 
    for (i=1e6; --i;) a.push(i); // init array 1M items
    var overflowCount;
    
    console.time('example2');
    for (i = 1e7; --i;) {
    		a.push(123456);
        overflowCount = a.length - maxLen;
        if (overflowCount > 10000) { // удаляем лишние элементы только при серьезном переполнении
            a = a.splice(0, overflowCount); // удаляем в начале overflowCount элементов
        }
        
        if (b.length === 0) { // в b закончились элементы
            b = a; // переносим все в b из a
            a.length = 0; // обнуляем буфер вставки
            if (b.length > maxLen) b.length = maxLen; 
            b.reverse(); // разворачиваем буфер извлечения чтобы доставать элементы из конца
        }
        b.pop(); 
    }
    Ответ написан
  • Более правильный путь изучения языка программирования. Какой он?

    riky
    @riky
    Laravel
    Программирование - та специальность где учится нужно всю жизнь.

    для веб разработчика надо хотя бы знать азы всех связанных технологий (в том числе js), если вы планируете работать в команде, а не быть фрилансером-одиночкой. Иначе надо знать все.

    в вашем случае начните хотя бы с чего нибудь (с одного ЯП) пусть этот же python когда освоитесь - перейдете к js например.
    Ответ написан
    Комментировать
  • Как закрыть исходный код js приложения после сборки его на ElectronJS?

    riky
    @riky
    Laravel
    насколько я понимаю задачу, скрестить ElectronJS и Nexe вряд ли получится.
    это разные инструменты для разных задач. nexe пихает свою указанную версию ноды в ехе, а у электрона в принципе ехе файл исполняемый свой единый. если вы исходники запакуете nexe в exe то электрон их просто не увидит.

    у электрона своя система упаковки, в архивичики но как по мне не очень надежная
    Ответ написан
  • Какую "легкую" js библиотеку с templating and 2way-data-binding выбрать?

    riky
    @riky
    Laravel
    матрешка js
    Ответ написан
    Комментировать
  • А вы сохраняете себе кусочки кода для повторного использования?

    riky
    @riky
    Laravel
    Раньше вел отдельные txt документы со сниппетами по каждой используемой технологии. Довольно удобно и быстро можно поднять любую инфу поиском по тексту (хотя доки получаются на тысячи строк).

    В голове все равно все не удержать, а каждый раз гуглить то что когда то уже видел не айс. Поэтому если встречаю чтото интересное или изучаю что-то то добавляю снипеты в блокнотик.

    Сейчас сделал для себя сервис древовидное хранение заметок, по принципу все в одном доке, тестирую насколько получится удобно.
    Ответ написан
    2 комментария
  • Какие технологии необходимы?

    riky
    @riky
    Laravel
    все так как сказал @smidl
    только если сайт Б узнает про тебя и ему это не понравится, то вычислит по IP и забанит легко
    Ответ написан
    Комментировать
  • Можно ли писать на io.js плагины для командной строки и как написать его вообще(на node.js)?

    riky
    @riky
    Laravel
    для винды делают cmd файлы
    вот пример из webpack а

    webpack.cmd
    @IF EXIST "%~dp0\node.exe" (
      "%~dp0\node.exe"  "%~dp0\node_modules\webpack\bin\webpack.js" %*
    ) ELSE (
      @SETLOCAL
      @SET PATHEXT=%PATHEXT:;.JS;=;%
      node  "%~dp0\node_modules\webpack\bin\webpack.js" %*
    )
    Ответ написан
  • Как дождаться загрузки изображений?

    riky
    @riky
    Laravel
    $('#my-img').on('load', function(){
    // загрузилось
    })
    Ответ написан
    Комментировать
  • JS и Backspace. Как запретить повторное исполнение скрипта?

    riky
    @riky
    Laravel
    как я уже писал без кук не будет и сессий, поэтому ajax запросы делать бесполезно, вы все равно не поймете что 2 запроса пришли от одного клиента.

    используйте библиотеку samy.pl/evercookie которая пытается сохранить данные на клиенте всеми мыслимыми и немыслимыми способами, в том числе localStorage и всевозможные кеши браузера.

    используется для случаев когда нужно все таки трекать пользователя, даже если он чистит куки.

    количество способов восхищает

    - Standard HTTP Cookies
    - HTTP Strict Transport Security (HSTS) Pinning
    - Local Shared Objects (Flash Cookies)
    - Silverlight Isolated Storage
    - Storing cookies in RGB values of auto-generated, force-cached
    PNGs using HTML5 Canvas tag to read pixels (cookies) back out
    - Storing cookies in Web History
    - Storing cookies in HTTP ETags
    - Storing cookies in Web cache
    - window.name caching
    - Internet Explorer userData storage
    - HTML5 Session Storage
    - HTML5 Local Storage
    - HTML5 Global Storage
    - HTML5 Database Storage via SQLite
    - HTML5 IndexedDB
    - Java JNLP PersistenceService
    - Java CVE-2013-0422 exploit (applet sandbox escaping)


    хотя конечно в 99,9% случаев будут все равно использоваться куки, редко у кого они выключены.
    Ответ написан
    Комментировать
  • Как запретить копирование коммерческого ПО (библиотека на PHP)?

    riky
    @riky
    Laravel
    если нет инета то привязка может быть только к железу (серийный код материнской платы).

    для того чтобы в php их получить надо писать свое расширение для php на С.
    но если честно даже так его будет просто взломать, просто убрав проверку в php. чтобы убрать было сложнее нужно файл с функцией которая проверяет зашифровать любым php энкриптором, в этом файле обязательно должны быть рабочие функции необходимые для обычной работы, иначе можно будет просто удалить инклюд этого файла.

    сомневаюсь что вы будете заморачиваться с написанием php экстеншена, хотя и он простой по функционалу, нужно разбираться с zend engine api.

    также аналогичный, но более простой вариант - написать простую программу на с++ например, можно консольную, которая извлекает этот сериал материнской.
    подойдет любой компилируемый язык (C, C++, C#, наверное даже pascal или basic), программа будет простая
    https://www.google.ru/webhp?q=get+motherboard+serial (добавьте любой ЯП)

    далее зашифрованная функция будет также запускать его через exec, со спец параметрами и получать вывод из нее (желательно их общение сделать запутанным, чтобы было сложно написать подобную программу, которая просто вернет то что хочет php).
    php файл с функцией обязательно заэнкодить. просто обфусцировать php - защита от дурака, более менее грамотный легко вскроет.

    ps пока писал, придумал еще вариант - исопльзовать mac адрес сетевухи.
    программу на С писать не придется тк можно использовать встроенные консольные команды ОС
    нужно парсить вывод
    exec('ipconfig /all')
    как минимум искать нужный мак адрес.
    Ответ написан
  • Можно ли сделать такой DOM элемент, чтобы все клики проходили сквозь него?

    riky
    @riky
    Laravel
    непонятна причина зачем, а так наверное правильнее как вы и сказали

    $(document).click(function(e){
      // e.target - по какому элементу кликнули
    });


    непонятно почему это не подходит для вас?

    кстати если сделать так
    $(document).on('click', '.myClass', function(e){
      // ...
    });
    $(document).on('click', '.myOtherClass', function(e){
      // ...
    });


    то jquery поставит один клик обработчик на document а уже внутри будет проверять кликнули по myClass или myOtherClass и вызовет одну(а может и не одну) из ваших функций.
    Ответ написан
    Комментировать
  • Сколько должна занять учёба?

    riky
    @riky
    Laravel
    не смотри ни на кого, просто учись и делай.

    например, если кто-то может сделать стул за день, а ты только за неделю, это не значит что "делание стульев" это не твое и тебе этим не надо заниматься. сегодня за неделю, а через месяц будешь за 6 дней например делать.

    ps всегда сравнивай себя только с собой в прошлом.
    Ответ написан
    Комментировать
  • Как загрузить картинку на сервер с помощью PHP?

    riky
    @riky
    Laravel
    1) вывести картинку на скрытый канвас
    2) сгенерить base64 код содержимого канваса
    3) добавить хидден поле и записать его value этот код.
    4) на сервере он будет в $_POST переменной
    Ответ написан
    Комментировать