Профиль пользователя заблокирован сроком с 6 мая 2016 г. и навсегда по причине: Мат в комментариях
Ответы пользователя по тегу JavaScript
  • Почему не передаются данные из контактной формы?

    @VZVZ
    Reverse-Engineer, Software Developer, Architect
    Так вы в JSе поля формы-то и не отправляете нигде. Просто делаете AJAX-запрос к action и все.
    Или я тупой, а jQuery умнее меня, и даже в такой ситуации догадывается что надо отправить поля?))) Сомневаюсь.

    Вообще сниффер Fiddler советую для подобных случаев, он ведет журнал запросов от клиента к серверу, смотришь журнал и сразу ясно, правильный ли запрос отправил клиент, и если правильный, то на серваке проблема
    Ответ написан
    3 комментария
  • А вы сохраняете себе кусочки кода для повторного использования?

    @VZVZ
    Reverse-Engineer, Software Developer, Architect
    Фреймворки нужно писать.
    Понятия "код на самописном фреймворке" и "(говно)код без фреймворка" - это две большие разницы. Неважно для какой платформы этот код.
    Ответ написан
    Комментировать
  • Где искать сниппеты кода javascript?

    @VZVZ
    Reverse-Engineer, Software Developer, Architect
    Именно сниппеты - маленькие кусочки кода для конкретных маленьких задач?
    В гугле можно искать, по запросам типа "javascript get request", только это тоже требует навыков, и требует труда, иногда приходится ссылок штук 5 пересмотреть, прежде чем найдется нужное.
    А есть нетривиальные задачи, по которым вообще готовых решений нет.
    Ответ написан
    1 комментарий
  • Какую книгу по програмированию/ресурсы выбрать чтоб в последующем писать скрипты/ботов/автокликеры?

    @VZVZ
    Reverse-Engineer, Software Developer, Architect
    Именно автокликеры как таковые - это очень просто, пишется почти на любом ЯП, но они фигня полная.
    Медленно, неудобно в использовании, ведь на экране все время окошки мелькают, а главное - криво (программно очень сложно определить, когда уже появилось окошко, а когда нет, и тем более сложно определить, если это не окошка, а элемент на веб-странице, который еще и подгружается не сразу же.

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

    Начинать действительно стоит с HTTP/HTTPS (это протокол, по которому работает 99,(9)% сайтов и немало приложений),
    Суть здесь в том, что клиентская часть при определенных действиях юзера делает запросы к серверной, вот эти запросы мы сперва вручную перехватываем, затем на любом ЯП имитируем их отправку.
    Для перехвата (это исследовательская часть работы - Research) понадобится сниффер Fiddler. А для отправки запросов (Development) - почти любой ЯП годится, но под виндой лучше C# либо Delphi.
    Подробнее:
    https://otvet.mail.ru/answer/1794591622
    Отмечу, что этот вариант подходит и для сайтов с AJAXом, коих сейчас очень много.
    Советую также изучить AJAX, ведь не умея самому сделать такую архитектуру, вы и с чужим сайтом не разберетесь. Статья по AJAX:
    codeproject.com/Tips/1065669/How-To-Build-Web-Site...
    Все же здесь имеются и нюансы, например, приложение может работать через свой прокси, что затрудняет перехват запросов Fiddlerом, или же это вообще приложение под мобильную ОС, где снифферов толком нет. В целом все это обходится, любому приложению можно задать фиддлеровский прокси, приложения для Android запускаются на Genymotion опять же с прокси и т.д.

    НО! Не стоит ограничиваться HTTP/HTTPS.
    Почему?

    1. Некоторые сайты работают по протоколу TCP (голые сокеты, это ниже уровнем, чем HTTP/HTTPS). Fiddler не покатит.
    Чтобы понять эту архитектуру, и поэкспериментировать с протоколом, советую освоить NodeJS и socket.io - это лучший способ создать свой простенький сайтик с TCP и использовать его как полигон для изучения TCP и написания первого своего бота такого уровня. В качестве сниффера здесь Wireshark, он сложнее и не столь удобен, но можно и с ним справиться.
    Еще бывает протокол RTMP (но это уже с Flashем, на чистом JS не бывает), там вроде Adobeовский какой-то бек-енд, тоже надо освоить так же, как и TCP. В качестве сниффера - Wireshark годится вроде.
    А самый абзац - это клиентские приложения. Вроде Skype, Viber, WhatsApp и т.д. Приложение в отличие от сайта может юзать вообще какие-то редкие протоколы или вовсе свой протокол, из них вроде XMPP самый простой и открытый, с этим сам пока не разбирался.

    2. На некоторых сайтах вроде бы HTTP/HTTPS и все понятно.
    Но всего слишком много. Просто слишком много. Слишком много запросов на одно действие, слишком много параметров запросов, слишком много куков. Например, гугловские сервисы славятся этим.
    Все это имитировать HTTP-запросами реально устаешь, а если хоть что упустишь, то это потенциальная проблема (а боты и так периодически ломаются, когда бек-енд меняется)
    В ряде случаев лучше взять PhantomJS (можно через CasperJS), это браузерный движок, но не простой, а специально для таких целей. Он представляет почти весь функционал, какой нужен. Боты получаются не столь быстрые, как на голых HTTP-запросах (которые, очевидно, даже быстрее человека с браузером), и все это на NodeJS (под виндой это скорее недостаток, чем достоинство, лучше бы C#, хотя можно и PhantomJS прикрутить к C#, но криво), но зато боты более стабильные выходят (гораздо более похожие на реальный браузер с гораздо меньшими усилиями по имитации), и пишутся быстрее.

    P.S. Профессиональный ботовод, бюджет иных проектов составлял 5-значные числа.
    Ответ написан
    Комментировать
  • Как получить HTML код страницы какого-нибудь сайта через JS?

    @VZVZ
    Reverse-Engineer, Software Developer, Architect
    А Flash не покатит?

    Вообще-то нормальное API должно возвращать ответ с заголовком, разрешающим кросс-доменные запросы.
    Другое дело, когда разрабы это не делают, нарочно либо по незнанию.
    Ответ написан
    Комментировать
  • Возможно ли получить данные из API ВКонтакте через JS?

    @VZVZ
    Reverse-Engineer, Software Developer, Architect
    Flash?
    Ответ написан
    Комментировать
  • Где бы почитать про такую "архитектуру"?

    @VZVZ
    Reverse-Engineer, Software Developer, Architect
    > Хочется узнать про клиент-серверную архитектуру (ведь так называется?).
    Строго говоря, клиент-серверная архитектура применена в любом сайте, даже если он без ajax (тупо на form'ах).
    И более того, даже если это вообще одна статическая страница HTML, лежащая на серваке без всякого PHP, то это все равно уже клиент-серверная архитектура.
    Ведь браузер (или иной клиент), когда вы в адресной строку вбиваете путь к каждой странице, делает GET-запрос к серверу и получает ответ с содержимым этой страницы.

    Вот здесь почитать для начала:
    codeproject.com/Tips/1065669/How-To-Build-Web-Site...
    Вначале там краткий пример очень простого чатика на form'ах с PHP+MySQL, без AJAXа.
    Потом показано, как в такой чат очень быстро добавить AJAX, сначала голым JS, затем jQuery.

    Затем уже самостоятельно вы можете подумать, как усовершенствовать этот AJAX и довести его до уровня реального REST API, к которому не просто возможно, а реально удобно подключаться и из других клиентов (скажем, собственного мобильного приложения, вроде как WebMoney Keeper, или как у VK или Facebook) Подсказка: JSON, React.

    Обязательно скачайте и поставьте сниффер Fiddler. Он позволяет вывести изучение клиент-серверной архитектуры по протоколам HTTP/HTTPS на новый глубокий уровень, многое тайное для простых смертных сделать явным, изучить бек-енд вашего сайта на предмет использования его в качестве REST API для сторонних клиентов (и не только вашего, но и чужих)))
    Ответ написан
    1 комментарий
  • Как понять что дано программировать?

    @VZVZ
    Reverse-Engineer, Software Developer, Architect
    Хочется создавать программы. Мне захотелось тогда же, когда увидел комп и посидел за ним. В 6-7 лет. Возможности программировать не было, поэтому я имитировал интерактив с помощью PowerPoint, а еще на досуге брал белый лист бумаги, рисовал GUI и фантазировал, будто это какая-то программа.
    Ответ написан
    Комментировать
  • Стоит ли использовать Microsoft Visual Studio для разработки не под .NET?

    @VZVZ
    Reverse-Engineer, Software Developer, Architect
    Ее и ее компилятор целесообразно использовать для проектов на C++, включая Qt. В большинстве случаев лучший выбор для С++ под виндой.
    HTML, CSS, JS - хз, пробовал только в связке с ASP.NET.
    Остальное - не очень. Главная проблема - отсутствие поддержки IntelliSense для синтаксисов многих языков.
    Ответ написан
    6 комментариев
  • Как быть с кроссдоменными запросами ajax?

    @VZVZ
    Reverse-Engineer, Software Developer, Architect
    > сделать проксирование через django тоесть все запросы будут уходить через python (не очень хороший вариант).
    Почему не очень хороший?
    Если там MVC, то просто в контроллере создаете новый Action, внутри которого делаете запрос, и возвращает ответ на этот запрос. Всё.

    > Либо добивать js какой то библиотекой для таких запросов
    Где вы такое видели?
    Библиотеки - это всего лишь обертки для чистого JS, которые упрощают с ним работу, но не привносят никакого нового функционала.
    Что нельзя на raw JS, для того нет и библиотек
    Ответ написан
  • Как лучше отдавать контент браузеру?

    @VZVZ
    Reverse-Engineer, Software Developer, Architect
    Вариант с HTML быстрее работает и быстрее реализуется, особенно если имеете сайт без AJAX и вам нужно за день добавить AJAX.
    Реально очень быстро можно сделать.
    Почитайте, в этой статье все с этого начинается:
    codeproject.com/Tips/1065669/How-To-Build-Web-Site...

    Но в том случае, если соберетесь также писать мобильный/десктопный клиент для своего сайта, то из какой-нибудь Java работать с HTML (мучительно парсить его через регулярки или DOM-модель), будет неудобно.
    Также не очень удобно будет делать рестайлинг подобного сайта, придется копать и бек-енд.
    Из рассчета на такие случаи, лучше сделать удобное стройное REST API, которое возвращает только данные (т.е. JSON), а обработкой занят уже чисто клиент.

    Кстати, "компиляцию" в HTML помогают упростить библиотеки типа ReactJS. Сам пока не пробовал, но говорят, что да, причем это не то, что jQuery, а нечто другое.
    Ответ написан
    Комментировать
  • Где можно прочитать про историю использования Javascript во frontend, эволюцию фреймворков и т.п.?

    @VZVZ
    Reverse-Engineer, Software Developer, Architect
    > Или может кто-то с опытом может написать?
    Ну, за деньги может и напишут, на фрилансе.

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

    Но кое-что все-таки есть. Вот, например, моя статья, которая, помимо прочего, демонстрирует преимущество jQuery (да и вообще фреймворков) над чистым JS, в плане работы с DOM и HTTP (AJAX):
    codeproject.com/Tips/1065669/How-To-Build-Web-Site...
    Читать раздел Simplifying Our JS Via jQuery.
    Ответ написан
  • Существует ли консоль (терминал) для выполнения JavaScript, как в ChromeDevTools, но отдельно?

    @VZVZ
    Reverse-Engineer, Software Developer, Architect
    > ChromeDevTools
    Можно самому напилить подобное, интегрировав браузерный движок (на основе CEF или WebKite) в свое приложение. В нем будут и ChromeDevTools.
    Получится приложение, в котором нет ничего лишнего, только 1 страница браузера (а можно и несколько) и эти самые ChromeDevTools.
    Причем JS там будет полноценный, с поддержкой DOM, т.к. есть реальная страница.

    Для C# есть библиотеки CefSharp и OpenWebKitSharp, которые оборачивают движки CEF и WebKit соответственно.
    Ответ написан
  • Какие есть js подобные языки?

    @VZVZ
    Reverse-Engineer, Software Developer, Architect
    Если отвечать на вопрос в лоб, то:
    1) NodeJS.
    Любой серверный язык может использоваться и как десктопный.
    Хотя возникнут проблемы и со специальными IDE, и с библиотеками, и с исходниками/документацией по всему этого. Их просто толком нету.
    Но если вы пишете крупный, серьезный, долгосрочный проект, то почему бы не напилить все это самим? MS же прошел через это. А любой хороший фреймворк сам по себе коммерчески ценен. Но не слишком ли громкие планы?
    2) На винде еще JScript (но это скорее утилитарный язык).
    3) И JScript.NET (давно канул в лету, потому опять голяк с IDE, исходниками, документацией).

    Ну и зачем подобные извраты? Не проще ли освоить полноценный десктопный язык?
    Привязываться к синтаксису программист не должен. А всё остальное на десктопе по-любому отличается. И, скажем, у C# тоже синтаксис удобный довольно, при этом под винду на нем куда удобнее писать.

    Если у вас есть алгоритмы на JS и их надо на десктоп, то проще внедрить их в приложение на C# с помощью JS-движков.
    Если у вас HTML+CSS+JS, то браузерные движки нужны, их немало...
    Другое дело, если у вас ВСЁ на HTML+CSS+JS...
    Ответ написан
    Комментировать
  • Как правильно делать локализацию JavaScript-приложений?

    @VZVZ
    Reverse-Engineer, Software Developer, Architect
    1) Не приходило ли в голову хранить в том JSON-файле перевод сразу всего куска HTML, а не по кусочкам? Тогда бы не пришлось ничего конкатенировать. Тогда в JS было бы достаточно:
    $("#debug").html(chrome.i18n.getMessage("debug_page_html"));

    Это и по производительности, пожалуй, было бы чуток быстрее.

    2) не приходило ли в голову не искать какие-то готовые библиотеки с избыточным функционалом, а просто написать СВОЮ функцию-шаблонизатор, которая бы заполняла пропуски в шаблоне HTML.
    Получится как-то так:
    $("#debug").html(my_own_function(
      '<h1>{{debug_page}</h1><h2>{{key_permissions}}</h2>',
      chrome.i18n.getMessage("debug_page"),
      chrome.i18n.getMessage("key_permissions")
    ));

    Это ведь не так уж и сложно.
    Ответ написан
    Комментировать
  • Стоит ли идти изучать Node.Js, или стоит подкрепить знания по JS??

    @VZVZ
    Reverse-Engineer, Software Developer, Architect
    А причем тут NodeJS и, скажем, регулярные выражения?
    Исходить надо из реальных задач, и учиться на реальных задачах.
    Если вам нужно поднять сервер - берите NodeJS и поднимайте сервер.
    В остальных случаях он ни к чему. Если нужны регулярки - изучайте регулярки. Мне вот они почти не нужны, так я их почти и не знаю, что не мешает мне знать дофига другого - того, что нужно.
    Ответ написан
    1 комментарий
  • Стоит ли делать регистрацию на Ajax?

    @VZVZ
    Reverse-Engineer, Software Developer, Architect
    Если вы хотя бы в перспекстиве планируете, помимо собственно веб-морды (HTML+CSS+JS), писать еще и мобильный/десктопный клиент, и в нем планируется поддержка регистрации, то лучше сделать AJAX, и не просто AJAX, а удобное стройное REST API с JSON. Оно реально облегчает написание дополнительных клиентов.
    Ведь в клиенте вам придется на какой-нибудь Java (если под Android) делать эти замые запросы к back-end (те, которые делает веб-морда), а отправлять из джавы запрос в формате application/x-www-form-urlencoded (и уж тем более получать ответ в виде HTML, который потом мучительно парсить регулярками или либами типа jsoup) - явно не очень удобно, да и по производительности тоже не очень - HTML всегда избыточен. Лучше, чтобы хотя бы в ответе был JSON, а для этого уже нужен AJAX.
    Ответ написан
    Комментировать
  • Как объяснить разную скорость выполнения вложенных циклов в разных языках?

    @VZVZ
    Reverse-Engineer, Software Developer, Architect
    Вообще в таких случаях все сводится к интерпретации (ну или исполнению машинного кода, если он машинный; по сути-то это та же интерпретация).
    А именно, к двум факторам:

    1) насколько хорошо оптимизирован алгоритм интерпретатора (алгоритм разбора кода, + не слишком ли много интерпретатор делает лишних операций, не связанных с выполнением кода, например, он может подгружать что-то там)
    > Замерял время выполнения с помощью линуксовой команды time.
    Это то есть вы смотрели не время выполнения алгоритма, а время выполнения программы в целом, от запуска до завершения? Ну там вообще куча причин может быть, интерпретатор не моментально запускается, и что он подгружает и делает при запуске, вообще одним авторам известно.

    2) насколько минимизирован (и вообще оптимизирован для интерпретации) сам интерпретируемый код. Именно поэтому код в бинарном формате (машинный код, байт-код) потенциально быстрее, чем код в текстовом формате. Во-первых, бинарник тупо компактнее, скажем вместо слова function (которое занимает самый минимум 8 байт) может быть всего лишь 1-2 кракозябра. Во-вторых, бинарный формат - он строгий, всё там более однозначно и не бывает всей этой мути с пробелами, табами и пр., интерпретатору меньше приходится думать что же значит каждый байт вместе с байтами перед ним и байтами после него. Минимизация кода с помощью утилит помогает сделать его компактнее, но интерпретатор-то все равно проверяет на табы, пробелы и т.д., так что и минифицированный код в текстовом формате - все равно не очень быстр всегда.
    Но в случае с Си, стандартные компиляторы по дефолту просто загаживают код всякой "дрянью", это отлично видно, если взять OllyDbg и сравнить хотя бы по длине с тем кодом, который дают компиляторы ассемблера.
    Ответ написан
  • Почему не работает плеер на HTML5?

    @VZVZ
    Reverse-Engineer, Software Developer, Architect
    А длительность ролика он определяет? Можете вручную запустить плеер?
    Он должен определять ее по-любому, неважно, что со скриптом.
    Если там всегда стоит 0:00 и даже вручную ничего не запускается, то, вероятно, данный браузер не поддерживает формат mp3 в тэге audio. Почитайте доки про этот тэг и посмотрите, какие форматы поддерживаются. Ну еще возможны проблемы с самим файлом mp3, может лежит не там где надо, но это вряд ли. Больше вариантов нет.

    А если можете запустить плеер вручную, то проблема в скрипте. Тогда смотрите консоль JS в браузере... В нее вообще стоит смотреть при ошибках.
    Ответ написан
    Комментировать