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

    @maxfox
    Можно использовать CSS-переменную.
    Если вам просто нужно выровнять высоту, то используйте flexbox.
    Ответ написан
    Комментировать
  • Как сделать лучше, merge двух массивов?

    @maxfox
    Для вашей задачи подойдут множества. Проверка на вхождение будет занимать константное время, таким образом объединение будет делаться за линейное.
    Ответ написан
  • Как сделать объект "твердым" на canvas'e?

    @maxfox
    У вас в коде написано не то, что вы привели в вопросе. У вас так:
    makeSolid(object1, object2)
    	{
    		if(this.collisionDetectedBetween(object1, object2) && object1.x > object2.x - object2.width && object1.x < object2.x)
    		{
    			if(!this.collisionDetectedBetween(object1, object2))
    				object1.x = object2.x - object2.width;
    		}
    		if(this.collisionDetectedBetween(object1, object2) && object1.x < object2.x + object2.width && object1.x > object2.x)
    		{
    			if(!this.collisionDetectedBetween(object1, object2))
    				object1.x = object2.x + object2.width;
    		}
    		if(this.collisionDetectedBetween(object1, object2) && object1.y < object2.y + object2.height && object1.y > object2.y)
    		{
    			if(!this.collisionDetectedBetween(object1, object2))
    				object1.y = object2.y + object2.height;
    		}
    		if(this.collisionDetectedBetween(object1, object2) && object1.y > object2.y - object2.height && object1.y < object2.y)
    		{
    			if(!this.collisionDetectedBetween(object1, object2))
    				object1.y = object2.y - object2.height;
    		}
    	}

    (Взято с гитхаба)
    Это, конечно же, работать не будет.
    Вот так все работает:
    makeSolid(object1, object2) {
            if (!this.collisionDetectedBetween(object1, object2)) return;
    		if(object1.x > object2.x - object2.width && object1.x < object2.x) {
                object1.x = object2.x - object2.width;
    		}
    		if(object1.x < object2.x + object2.width && object1.x > object2.x) {
                object1.x = object2.x + object2.width;
    		}
    		if(object1.y < object2.y + object2.height && object1.y > object2.y) {
                object1.y = object2.y + object2.height;
    		}
    		if(object1.y > object2.y - object2.height && object1.y < object2.y) {
                object1.y = object2.y - object2.height;
    		}
    	}

    Замечаний по коду делать не буду, он просто плох. И то, что вы не можете найти простые ошибки в своем же коде - тому доказательство. Советую поработать над этим.
    Ответ написан
  • Это SPA или Лендинг?

    @maxfox
    Просто интересует технологии которые использованы в реализации этого сайта.

    JS, CSS Transform, CSS Transition.
    Ничего сложного.
    Ответ написан
    Комментировать
  • Есть возможность преобразования нативного js в jquery?

    @maxfox
    Ошибка в this в коллбэке. Это и не должно работать. В порядке хотфикса, замените this на button.
    Ответ написан
  • Как правильно делать регистрацию?

    @maxfox
    Вам стоит использовать какой-нибудь фреймворк (на Python - это, к примеру, Django или Flask), а в его документации написано, как реализовать регистрацию, аутентификацию и авторизацию.
    Архитектурно - создаем в БД запись для пользователя и храним в БД данные, с этим пользователем связанные. По запросу - забираем данные из базы, подставляем в шаблон, отдаем клиенту.
    Если у вас SPA, то всё в целом похоже, просто шаблонизация происходит у клиента.
    Ответ написан
    Комментировать
  • Как написать алгоритм поиска соседних элементов?

    @maxfox
    Если хранить координаты в отсортированном массиве (X и Y отдельно), то проверять нужно будет только ближайших соседей, до тех пор, пока разница координат не превысит вашего минимального расстояния. Такая оптимизация тем эффективнее, чем меньше данное расстояние относительно размеров поля. Плюс кэшировать результаты сравнений, чтобы не проверять уже проверенные пары. Далее можно убивать кэш не каждый кадр, можно в четных кадрах искать вверх по массиву, а в нечетных - вниз и т.п. Но это уже по факту, если потребуется.
    Ответ написан
    8 комментариев
  • Как сделать возврат значения из callback?

    @maxfox
    Просто надо понять, что callback выполнится потом, поэтому вы и не можете вернуть значение из функции. Просто напишите внутреннюю функцию отдельно, дайте ей имя и делайте то, что вам нужно в ней. И передайте ее в vk(). Вам не нужно ничего возвращать, пишите код, который будет работать с полученным значением прямо в этой функции.
    А с промисами потом разберетесь.
    Ответ написан
    Комментировать
  • Как перебрать ассоциативный массив и обновить в нем данные?

    @maxfox
    for (var key in UsersObj) {
        console.log(UsersObj[key]);
    };
    Ответ написан
    Комментировать
  • Как решить Задачу?

    @maxfox
    Как вариант:
    1. Сделать массив a из 13 элементов.
    2. Пройти по руке, делая a[i]++ , где i - номинал карты.
    3. Отсортировать массив a.
    4. Если первый элемент 5 или 4, все ясно, если 3 или 2, то посмотреть на второй.
    * Наверное, быстрее шаги 3 и 4 сделать просто в один проход массиву. Если 5 или 4 - выходим, если 2 или 3, ищем дальше 2 или 3.
    Ответ написан
    Комментировать
  • Как реализовать ajax поиск на странице со сложно структурой?

    @maxfox
    Не очень понятно, что конкретно не получилось.
    Как вариант - делаете на странице элемент-контейнер, пишете для него отдельный шаблон в джанге. На ajax запрос рендерите этот шаблон с нужными данными и отправляете. Клиент принимает фрагмент html и меняет содержимое контейнера через .innerHTML. Даже JQuery не нужен.
    Ну или по другому - отдавать с сервера JSON и рендерить на клиенте. Например, через Handlebars. Если у вас не SPA - то фреймворки вроде Angular излишни.
    Ответ написан
    1 комментарий
  • Каким образом с помощью python получить полную страницу вконтакте?

    @maxfox
    Поставьте любой сниффер, Fiddler или Wireshark. Скролльте страницу и смотрите запросы.
    Для стены vk делает POST запрос на https://vk.com/al_wall.php c параметрами:
    act = get_wall
    al = 1
    offset = 10
    owner_id = 1
    type = own
    Где owner_id - id пользователя, а offset - смещение относительно последнего сообщения.

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

    @maxfox
    Если вам нужна защита от копирования - то только на сервере.
    В зависимости от характера вычислений, на сервере можно производить какую-то часть работы, без которой клиентский алгоритм бесполезен.
    Ответ написан
    Комментировать
  • Как реализовать авторизацию по паролю/логину через WebSocket + WebStorage и без Cookie?

    @maxfox
    Я не понимаю, вы пытаетесь реализовать cookies через local storage? Зачем? Даже если так, то вам нужно просто хранить достаточно длинный случайно сгенерированный токен, и отправлять его с запросом. По нему сервер будет определять пользователя. Та же session cookie, только с педалями..
    Если уж пишете свой велосипед, реализуйте что-нибудь интересное, например challenge-response authentication.
    Ответ написан
  • Как организовать систему like’ов?

    @maxfox
    По существу обновленного вопроса:
    Если вы делаете это в шаблонизаторе, то в цикле, выводя посты, обращайтесь к списку с лайками данного юзера и проверяйте. Условным оператором выставляйте нужный класс элементу.
    Если вы работаете через AJAX, то получайте JSON, проходите по нему циклом и расставляйте нужные классы элементам JS'ом.

    ЗЫ Рекомендую AJAX, по крайней мере в будущем. Это позволит закешировать страницы и не пересчитывать их при каждом запросе.

    ЗЗЫ Не знаю, что у вас там в БД, но очень надеюсь, что вы храните суммарное значение лайков/дизлайков в таблице с ответами, а не считаете его каждый раз заново..
    Ответ написан
    3 комментария
  • Как организовать систему like’ов?

    @maxfox
    А о чем вопрос? О модели данных, клиент-серверном взаимодействии или выводе на странице? Поле like/dislike по умолчанию 0. Меняем на 1 или -1 при действии.
    Соответственно, если 0 - то один цвет, если не 0 - то другой.
    Будете вы это делать AJAX'ом или в шаблоне - дело ваше.
    Ответ написан
    1 комментарий
  • Колоночная адаптивная вёрстка?

    @maxfox
    А почему вам нужны именно column? Я так понял, это отдельные блоки, каждый со своим контентом?.
    Чем вас не устраивают inline-block'и?

    CSS Column пока не везде работает. Лучше обычная блочная верстка, а если нужно растягивать контент на несколько блоков - то js.
    Ответ написан
    Комментировать
  • Стоит ли первым языком (после школьного Pascal) выбирать node.js?

    @maxfox
    Ох, вы бы еще на автомобильном форуме спросили, какую машину лучше выбрать.. :)

    В свою очередь поддержу Python и Django. Вообще для начинающего веб-разработчика важнее понять HTTP и базы данных, не упирайтесь в ЯП, попробуйте несколько и выберите тот, который больше понравится.
    Ответ написан
    Комментировать