• Возможно ли узнать url сайта, зная ID приложения?

    riky
    @riky
    Laravel
    в официальном апи такого не видел, скорее всего нет.
    да и зачем это, кроме "интересно"?
    Ответ написан
    1 комментарий
  • На каком языке пишут шейдеры для Canvas?

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

    riky
    @riky
    Laravel
    файлы нужно хранить в файлах, а не в базе.

    но раз уж вляпались
    для отображения у вас два пути либо вставлять ее в тело data base64
    либо делать отдельный роут ( /image/14578.jpg ) который по ид будет выводить тело картинки в вывод (res.send(post.image)) в вывод +
    добавлять в заголовки "Content-Type: image/jpeg"
    Ответ написан
    3 комментария
  • Робот на arduino, есть перспективы?

    riky
    @riky
    Laravel
    Dima Kim: мнения бывалых такие: если интересно - занимайтесь (хотя бы для саморазвития), если не интеренсо - не занимайтесь.
    шанс что дойдет до внедрения близок к нулю, тк подобных вещей много и продвигаются большими компаниями.

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

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

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

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

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

    конечно, по поводу websocket для игр вчера отвечал на вопрос, возиожно будет тоже интересно
    Как построить онлайн карточную игру на PHP и canvas?
    Ответ написан
  • VK API, PHP Как получить токен у которого хватит прав для метода wall.post?

    riky
    @riky
    Laravel
    У меня standalone приложение


    standalone это десктопные программы (а не сайты). и этот режим не случайно сделан так чтобы для сайтов токены нельзя было получить.

    способ только один - отправлять юзеров переходить по ссылке с redirect_url=vk blank и копировать оттуда токен. Да, они будут видеть предупреждение что копировать нельзя и многие этого делать не станут и правильно сделают.

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

    если разрешить всем сайтам доступ к стене, то очень быстро ее засрут все кому не лень.
    Ответ написан
  • Как узнать категорию группы/публичной страницы в VK с помощью VK API?

    riky
    @riky
    Laravel
    похоже через апи никак
    вся инфа о них получается через https://vk.com/dev/groups.getById

    доп поля https://vk.com/dev/fields_groups
    категорию там не нашел

    через апи поиска тоже нет такого параметра
    https://vk.com/dev/groups.search
    а больше эта категория нигде не фигурирует
    Ответ написан
  • Как построить онлайн карточную игру на PHP и canvas?

    riky
    @riky
    Laravel
    Тоже сейчас делаю карточную игру онлайн. Клон древней astral tournament - пример https://youtu.be/qZbVjDvKSx4?t=50s

    В основном для обучения. Делаю на nodejs (хотя в основном обычно работаю на php/symfony) нода для таких вещей лучше адаптирована, с сокетами работает эффективнее, а на пхп придется поизвращаться (либо как вы описали аякс запросами постоянными долбить сервер, либо вебсокеты тоже пытаться прикручивать).

    Собственно на ноде все просто. после создания вебсокета можно двухсторонне общаться, на клиенте и сервере можно отправлять события и подписываться на них. Вся логика на сервере - клиент тупой только отправляет события и отрисовывает присланные события.

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

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

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

    ну и далее все аналогично - любой клик по сути на клиенте всего лишь отправляет событие на сервер о том что хочет сделать игрок. все рассчеты на сервере и на клиенты уже отправляются события для изменения UI. Таким образом мухлевать невозможно.

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

    в общем и целом все просто
    1) на сервере и клиенте есть обработчики событий друг от друга.
    2) с клиента идут события - команды игроков (создать игру, присоединится, сделать ход, сдаться, пропустить ход)
    3) с сервера идут команды для изменения UI (добавить игру в список, открыть UI игры, запустить анимацию сценария хода)

    я думаю мог и на пхп это сделать, опыт с ним > 5 лет, а с нодой ничего особо серьезного не делал пока, хотя иногда пользуюсь ей. но с пхп это будет не лучшее решение.

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

    riky
    @riky
    Laravel
    Все реально.
    Главное чтобы после автоматизации, автоматизатор не нужен не оказался.
    Ответ написан
    1 комментарий
  • Какова будет реакция покупателей на обфускацию javascript в шаблоне?

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

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

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

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

    если скрипт для UI то это конечно не вариант.
    Ответ написан
    1 комментарий
  • PHP intval() округляет?

    riky
    @riky
    Laravel
    да уж забавно получается

    intval(2.25 * 100) === intval(2.26 * 100) // true
    если последняя цифра > 5 то округляется вниз

    но
    intval(2.5 * 100) === intval(2.6 * 100) // false

    а это вообще brainfack
    echo intval(2.55 * 100); // 254
    echo intval(2.56 * 100); // 256


    round все решает
    echo round(2.55 * 100); // 255
    echo round(2.56 * 100); // 256
    Ответ написан
    Комментировать
  • Как реализовать очередь фиксированной длины?

    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 например.
    Ответ написан
    Комментировать
  • Сканирование директорий сайта это реально?

    riky
    @riky
    Laravel
    если сервер не ваш - никак
    если ваш - то надо писать скрипт например php
    Ответ написан
  • Какой самый быстрый способ распознать цифры на картинке?

    riky
    @riky
    Laravel
    самый быстрый конечно не делать распознавание символов, а искать совпадение паттерна из нескольких пикселов цифры. тем более что цифры всегда на одной позиции.

    думаю будет достаточно сравнения 8-16 характерных точек у каждой цифры.
    Ответ написан
    Комментировать
  • Как закрыть исходный код js приложения после сборки его на ElectronJS?

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

    у электрона своя система упаковки, в архивичики но как по мне не очень надежная
    Ответ написан
  • Зачем vk использует переадресацию при входе в систему?

    riky
    @riky
    Laravel
    скорее всего еще одна ступень безопасности. там они ставят куки чисто на login.vk поддомен на год + HttpOnly.
    на основном домене куки ставятся на все подомены (и без HttpOnly), что менее безопасно в случае xss.

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

    riky
    @riky
    Laravel
    сначала генерируешь новый дефолтный бандл.
    потом сам добавляешь туда что тебе нужно.

    скрипт сгенерит стандартную структуру и пропишет бандл в AppKernel и routes.yml - все

    идея в том что ты создаешь бандл и начинаешь работать в нем, нет инструментов для авто перемещения из бандла в бандл.
    Ответ написан