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

    @VZVZ
    Reverse-Engineer, Software Developer, Architect
    Что я делаю не так?
    Нахватались вершков и думаете, что теперь любой бот написать можете.
    Хрен.
    HTTP осваивайте и Fiddler, это универсальный вариант (кроме редких случаев, когда на сайте используются сокеты TCP, или какой-нибудь RTMP от Adobe - тогда еще глубже копать надо, хотя и это еще далеко не самое глубокое), хотя и очень геморный.
    Практика в разработке сайтов (как фронт-енда, так и бек-енда) тоже нужна большая и на разных языках. Глупо надеяться стать ботоводом, реверс-инженером, хакером, при этом не умея в совершенстве создавать то, что хотите хакать.
    Только тогда можно браться за высокоуровневые штуки вроде Selenium, PhantomJS, и то использовать их далеко не всегда, иногда HTTP-запросы лучше.
    Ответ написан
    Комментировать
  • Серверные языки - как не запутаться и что изучить?

    @VZVZ
    Reverse-Engineer, Software Developer, Architect
    > c# на нем еще пишут?)
    С чего вдруг столь странный вопрос?

    > Есть ли смысл браться за все направления серверной разработки?
    Есть.
    Я еще и десктопную туда добавил, и мобильную, и еще ряд более редких направлений. И ни разу не жалею.

    > Что учить?
    Учат - стихи, наизусть.
    А программированию - учатся.
    Главное в программисте - это понимание общей логики. Веб не исключение. Скажем, формы (form) - они и в Африке формы. HTTP-запросы - они и в Африке HTTP-запросы. MVC - он и в Африке MVC. И главное - гугл - он и в африке гугл.
    И чем больше вы изучите разных средств (в смысле изучите на практике, а не сколько учебников прочитаете), тем обширнее, глубже и тверже будут эти знания.
    Да, если говорить об учении наизусть (чтоб прям все функции помнить без гугла), то лучше что-то одно, чем много, ведь голова-то имеет ограниченный объем памяти. Но знать функции наизусть - задача кодера, а не программиста.
    Ответ написан
    4 комментария
  • Стоит ли использовать Microsoft Visual Studio для разработки не под .NET?

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

    @VZVZ
    Reverse-Engineer, Software Developer, Architect
    > Можно ли через web.skype.com отправлять сообщения? Есть какие-нибудь идеи?
    Еще как можно, и еще как есть.
    web.skype.com - обычный сайт. Сайт состоит из фронт-енда и бек-енда. Фронт-енд шлет бек-енду запросы по протоколу HTTP/HTTPS.
    Берем HTTP-сниффер (например, Fiddler), перехватываем эти запросы - и имитируем их отправку на любом ЯП, так, чтобы полностью совпадало. И все - мы имеем свой клиент для тамошнего бек-енда, т.е. свой бот.
    Обычно так боты и пишут для тех сайтов, у которых нет вменяемого API (а это почти 100% всех сайтов инета).
    Ответ написан
    Комментировать
  • Как использовать методы типа GET в языке Python?

    @VZVZ
    Reverse-Engineer, Software Developer, Architect
    Вы, похоже, путаете одни "методы" с другими "методами".

    Во-первых, не бывает никаких "методов типа GET".
    Это называется "запросы методом GET", что означает "запросы типа GET". В терминологии HTTP, слово "метод" означает "тип запроса".

    А методы API (каким, по-видимому, является getRules) - это адрес (URL), к которому нужно делать HTTP-запрос методом GET или методом POST.
    Адрес должен быть полным. В документации могут опускаться полные адреса для запросов, вместо них там так называемые "методы API".
    Но по-любому нужно раздобыть полный URL. Он должен быть в документации где-то (его первая часть общая дя всех "методов API"). Также его можно найти методом гуглинга.

    С Телеграмом не работал, но приведу пример для API ВКонтакте.

    Вот документация со списком "методов API":
    vk.com/dev/methods

    Вот описание в ней "метода" под названием "users.get":
    vk.com/dev/users.get

    А вот какой полный URL у нас получается в итоге:
    http://api.vk.com/method/users.get?user_ids=58756174


    Вот эта вот часть - "api.vk.com/method" - она общая для всех "методов API" в случае с VK API.
    Разумеется, для какого-то другого API она будет другая совсем. Ее нужно найти - в документации либо в гугле. Это возможно, если гуглить примеры кода с этим API.

    Этот полный URL мы можем открыть в браузере (т.к. API поддерживает GET-запросы), и увидим, что все работает. Также мы может отправить по нему GET-запрос программно, получится типа такого:
    requests.get("http://api.vk.com/method/users.get?user_ids=58756174", ...)


    Еще рекомендую скачать и поставить сниффер Fiddler, это практически незаменимое средство для тех, кто пишет боты.
    Он позволяет перехватывать все GET/POST-запросы с вашего компа, его можно использовать для отладки и для реверс-инжиниринга.
    Ответ написан
    3 комментария
  • IronPython - что за зверь?

    @VZVZ
    Reverse-Engineer, Software Developer, Architect
    Спрашивается: зачем Python, если есть .NET, который, будем откровенны, гораздо мощнее и стройнее как фреймворк?
    Под винду надо .NET, а под .NET надо C#, а не мутанта какого-то, по которому исходников вообще нету и придется все время юзать конвертер.
    И IDE надо нормальную (т.е. VS), а не устаревшую кривую SharpDevelop, которая в развитии остановилась где-то на уровне VS 2003-2005 и не имеет, скажем, достаточно развитого аналога IntelliSense.

    IronPython - не единственный такой мутант. Еще есть IronRuby, был J#, JScript.NET, есть C++.NET... Да и VB.NET, по сути, туда же можно отнести.
    Естественно, всё это хрень. Пожалуй, единственное применение подобным мутантам (как и большинству прочих "альтернативных" средств разработки) - это в качестве "моста", позволяющего кое-как соединить чьи-то уже готовые наработки на одном ЯП - с кодом на другом ЯП.
    Делать на них упор в изучении - не стоит. Если вы станете программистом (именно программистом, а не тупо кодером), то вы просто сможете брать тот инструмент, который вам нужен для данной задачи - и писать на нем то, что надо написать (хотя иной раз и не без приступов рвоты)

    Ну а настоящий Python, который без мутаций, - это аналог C#, но для линукса и линуксоидов (в смысле любителей терминала, вроде сисадминов).

    Так что пусть C# будет отдельно, а Python - отдельно; ну а что из этого нужно вам - решайте сами.
    Ответ написан
  • Как объяснить разную скорость выполнения вложенных циклов в разных языках?

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

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

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