• Какие есть материалы по Python для тестировщика?

    @slepowl
    учу-верчу python
    Автоматизатор тестирования == разработчик. Факт. Просто он пилит не сам продукт, а ПО для его тестирования. Все. Основы по любой вменяемой книге, затем Автостопом по Python рекомендую. Ну и для автоматизации если, можно ознакомиться с Selenium (веб) и RobotFramework (приемочные автотесты).
    Ответ написан
  • Как автоматизировать процессы с помощью PHANTOM JS?

    alekciy
    @alekciy
    Вёбных дел мастер
    1. Да, может. Это полноценный браузер на базе webkit.
    2. Любое headless ПО способное работать с DOM. CasperJs, Slimer, FireFox, Chrome.
    3. Зависит от контекста задачи. Но на вскидку можно сразу предупредить, что PhantonJS базируется на старой версии движка которая может отработать JS некорректно. И в этом случае какой-нибудь FireFox или Chome последних версий в headless режиме будут предпочтительнее. Выясниться это в момент "о, блин, а фантом не умеет это js кушать".
    4. Как готовый продукт нет, не существует. Как платфома - любой.
    Ответ написан
  • Как правильно использовать инкапсуляцию в Page Object паттерне?

    @mipan
    PageObject подразумевает работу с элементами страницы в тесте без вызова вебрайвера напрямую.
    Ответ написан
  • Почему я создаю одинаковые объекты а у них разные хэшкоды?

    roswell
    @roswell
    и швец, и жнец, и на дуде игрец
    Потому что всё-таки это два разных объекта. Чтобы hashCode возвращал значение, привязанное к атрибутам объекта, нужно в классе Card переопределить метод hashCode (а заодно и equals, чтобы соблюсти контракт) с кастомным подсчётом хеша, иначе всё будет происходить соответственно докции:
    As much as is reasonably practical, the hashCode method defined by class Object does return distinct integers for distinct objects. (This is typically implemented by converting the internal address of the object into an integer, but this implementation technique is not required by the Java™ programming language.)
    Ответ написан
  • Имитация 3D в 2D?

    devalone
    @devalone
    ̻̻̻̻̻̻̻̻̻̻̻̻̻̻̻̻̻̻̻̻̻̻̻̻̻̻̻̻̻̻̻̻̻̻̻̻̻̻̻̻̻̻̻̻̻̻̻̻̻̻
    Вероятно у объектов есть z параметр, задающий "глубину", т.е. номер слоя и соответственно его порядок отрисовки, а корзина состоит из двух объектов.
    Ответ написан
  • Через что реализовать очень простую сетевую игру?

    jamakasi666
    @jamakasi666 Куратор тега Java
    Просто IT'шник.
    У Вас крайне простая игра крестики-нолики. Получается для сетевой игры нужно передавать следующее:
    - Событие новой игры ; //Идентификатор пакета 1
    - Событие установки крестика\нолика(int "x" , "y", и к примеру булевой тип isCircle)//Идентификатор пакета 2
    - Событие победы. //Идентификатор пакета 3
    - Событие ошибки(неверный ход) //Идентификатор пакета 4
    Т.е. всего 4 типа данных.
    Сетевой пакет можно представить следующим текстовым видом:
    "число_идентификатор_типа_пакета;опциональные данные;опциональные данные"
    ; - делитель(delimiter строки)

    Серверная сторона порт=7777:
    ServerSocket ss = new ServerSocket(7777); //создали сервер
    Socket socket = ss.accept();//Ждем клиента
    //Сюда попадаем только когда подключился клиента
    DataInputStream in = new DataInputStream(socket.getInputStream(); //Получаем поток ввода
    DataOutputStream out = new DataOutputStream(socket.getOutputStream()); //Получаем поток вывода
    String line = null;
    while(true) {
         line = in.readUTF(); // Тут ждем и получаем строку от клиента
         String[] data = line.split(";"); //Разделяем полученную строку в массив строк
         if(data[0].equals("1")){
         //Сбрасываем уровень начинаем новую игру}
         if(data[0].equals("2")){
         //Ставим крестик\нолик по координатам
         int x =data[1]; int y=data[2];boolean isCircle=data[3] //Не забудь типы привести, ну там Integer.parse(data[номер])
         //Ну возможно отправить ответ клиенту
        out.writeUTF(line); // шлем его же строку обратно чтобы клиент у себя отрисовал фигуру или пакет с ошибкой
        out.flush(); // заканчиваем передачу в поток.
         }
         ....
    }


    У клиента:
    Socket socket = new Socket(InetAddress.getByName("IP сервера"), 7777);  //создаем сокет
    DataInputStream in = new DataInputStream(socket.getInputStream(); //Получаем поток ввода
    DataOutputStream out = new DataOutputStream(socket.getOutputStream()); //Получаем поток вывода
    String line = null;
    while(true) {
    ... тут все аналогично серверу только с правками для клиента
    }

    Если хочется абстракции то заверни псевдокод выше в свой класс.
    Spring вообще не для этих целей служит, в данной задаче это всеравно что забивать гвозди микроскопом.
    Для вашей задачи сокеты это какраз то что и нужно изза того что все крайне просто и на глазах Проблем с сокетами тоже никаких быть не может.
    Ответ написан
  • Что это за язык програмирования и что такое Т?

    chupasaurus
    @chupasaurus
    Сею рефлекторное, злое, временное
    И никто не подумал о том, что это просто псевдокод с намешиванием синтаксиса нескольких языков?
    Ответ написан
  • Как упростить список исключений?

    А что в m.text?
    Пример:
    Ну и допустим что m.text != ETH+DCR, иначе можно просто все условия положить в список и проверять m.text in list_if
    Сделайте функцию
    def check_if(value):
        list_if = [
            ('ETH+PASL', 7),
            ('ETH+DCR', 8),
            ('/pools', None),
    
            # и так далее
        ]
        for check_v, check_len in list_if:
            if value in check_v and ((check_len == len(value)) if check_len else True):
                return True
    
    
    check_if(m.text)


    так и расширять в последствии будет проще
    Ответ написан
  • Почему рекурсия не останавливается?

    return search(this) ?
    вы вызываете функцию с текущим контекстом. А нужно вызвать с тем объектом, в котором хотите искать, т.е. obj[key]. Ну и return конечно не нужен. Т.к. иначе вы выйдете из цикла после первого попадания на объект.
    Ответ написан
  • Текстовая игра в unity3d. Как лучше реализовать?

    k12th
    @k12th
    console.log(`You're pulling my leg, right?`);
    Хотя можно и в Unity3D, для чисто текстовых игр есть более удобные и легковесные инструменты:

    Онлайн, в основном гипертекстовые (то есть игрок кликает по ссылкам):
    • https://texturewriter.com/ довольно необычная парадигма, игрок перетаскивает слова-действия на слова-предметы (или наоборот)
    • twinery.org/2 (только не качайте ради всех богов этот гребаный десктопный клиент)
    • textadventures.co.uk/squiffy простой, но рабочий
    • textadventures.co.uk/quest (пожалуй, единственный среди онлайн-инструментов поддерживает парсерный ввод)
    • sm.axmasoft.com (русская документация, в принципе клон Twine)


    Требуют скачивания инструментов:
    1. www.inklestudios.com/ink (есть плагин к Unity3D)
    2. https://www.choiceofgames.com/make-your-own-games/... ChoiceScript, младший брат бывшего платным ink
    3. instead.syscall.ru/index.html (опять русская документация)
    4. inform7.com и русско-язычный вариант rinform.stormway.ru


    К сожалению, посоветовать что-либо конкретнее без знания вашего уровня и без конкретной задачи не могу. Если вы новичок в программировании и английский не очень — axma. Если английский норм — twine, squiffy, texture (люди делают очень красивые вещи на Twine). Если не боитесь писать HTML/MarkDown и прочие подобные вещи -- ChoiceScript, ink. Хотите олдскульного хардкора — instead, inform, tads.
    Ответ написан
  • Хочу сделать свой дистрибутив linux на основе существующего?

    @dinegnet
    Хочу на основе данного дистрибутива сделать свою версию, с самым последним ядром и софтом. Что мне для этого нужно? Вырезать из дистрибутива упоминания слова "Porteus"


    То есть ты уже решил все проблемы по созданию собственного самобытного дистрибутива?
    Он у тебя уже уникальный и достоин собственного имени?
    И дело за малым осталось? Переименовать?

    Есть подробная инструкция уже.
    Ищи по фразе BolgenOS
    lurkmore.to/%D0%94%D0%B5%D0%BD%D0%B8%D1%81_%D0%9F%...
    lurkmore.co/%D0%94%D0%B5%D0%BD%D0%B8%D1%81_%D0%9F%...
    Ответ написан
  • MVC / MVP / MVVM / etc.?

    petermzg
    @petermzg
    Самый лучший программист
    Сегодня ведь на Хабре писали на эту тему
    https://habrahabr.ru/company/tinkoff/blog/325376/
    Ответ написан
  • Подойдёт ли Python для взломов?

    saboteur_kiev
    @saboteur_kiev Куратор тега Python
    software engineer
    Вам нужно не питон учить, а технологии.

    Если вы изучите паяльник, это не значит что вы сможете спаять например телевизор.

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

    В конструкторе Admin вы создаёте объект класс Privileges
    self.rules = Privileges()
    но не передаёте никаких параметров. А у этого класса в конструкторе есть один обязательный параметр (rules), который, правда, никак не используется
    Ответ написан
  • Рост и развитие технических сотрудников?

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

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

    Идти нужно от простого: что есть отрицательного в работе => подавляет энергию => не хочется творить => не развиваешься. Недопонимание между операционной и технической командами? Потому что первые постоянно закидывают мозговыносящими задачами, а вторые, исправляя баги, добавляют новые. Ты в "ынтерпрайзе" и ограничен в своих действиях, ибо никто не хочет внедрять "по свистку" новый фреймворк(надежность в угоду моде)? Менеджер снова завалил какими-то непонятными задачами и т.д., сделав которые, понимаешь, что их можно было по-другому сгруппировать? Можно продолжать... Часть этих проблем можно решить нормальной, здоровой коммуникацией(иногда стоит пойти на жертвы среди сотрудников - было у меня и такое).

    Я не менеджер. Расскажу о 3-х летнем опыте(со старших курсов универа), который был стартом мой карьеры. Определенно, многому научился тогда. Исходные данные, чтобы было понятнее: организация(иностранная, если это будет важно) с представительством в РФ, Отдел внедрения IT.

    Эту фразу нужно будет поместить на место трех точек в каждом пункте("..."):
    Не каждому сотруднику это нужно, но обязательно найдутся те, кому будет полезнее именно так.

    Что мне со стороны сотрудника показалось важным для роста:
    0. Толковые тимлиды/архитекторы, готовые делиться знаниями - таких нужно выискивать и направлять их на менее опытных. Я в свое время с бешеной скоростью впитывал знания от старших товарищей. Команда сильна насколько силен самый слабый(и прочие бла-бла). Во-всяком случае, меня их уровень подстегивал. Это важный фактор, как ни крути. Должны быть лидеры(кстати, не только технические).
    ...
    1. Прозрачная система ведения бизнеса. Это значит, что информация о том, что происходит в компании на поле битвы(бизнеса) доступна и понятна каждому сотруднику безотносительно его должности. Хочет программист/тестировщик знать как дела обстоят с новыми клиентами, в каких тендерах участвуем - пожалуйста. Но без фанатизма и раннего открытия информации. Какие настроения у текущих клиентов? Какие внутриорганизационные моменты происходят?...
    ...
    2. Каждый сотрудник может спокойно организовать one-to-one с менеджером. Поговорить о выполняемых задачах, подвести итоги, обсудить какие-то планы на будущее(по бизнесу, по своему привлечению к будущим проектам, по возможному росту, по текущим задачам коллег). Сотруднику становится проще понимать прикладную составляющую своего труда и выдвигать свои идеи и предложения(разумно). Менеджер знаком с настроением каждого члена команды => распределяет задачи более оптимально, ну и в целом легче ему становится "дергать" нити управления.
    ...
    3. Как можно более индивидуальный подход в "конвейерных" тренингах. К примеру, занятия English: вот походили мы с ребятами на корпоративные уроки - но это было больше похоже на курс для галочки(большинство "учащихся" на абы как, учителю как ни старайся...). А время шло, и я в N-ый раз уже слышал менеджера "на колле" с иностранцами. Тут родилась идея объединиться в группу с тему, кому действительно ХОЧЕТСЯ и найти себе преподавателя из школы. Сказано - сделано. Больше года занимались с отдельным преподом, который к нам приезжал в офис. Потом даже выбили себе немного бюджета на это c помощью менеджера(не 100% покрыли конечно). И в итоге все довольны - мы знаем английский(главное, что потом и применять стали), у компании, соотв., тоже одни плюсы.
    ...
    4. Давать сотрудникам иногда чуть более важные задачи, чем они привыкли делать. Давать вистов иным образом. Здесь конкретные примеры сложно привести. Допустим, взять программиста в командировку на локацию на этапе оценки инфраструктуры и знакомства с клиентом. Хотя он там не особо-то еще нужен. Или в конференцию его подключить по важному вопросу. Нужным людям это даст больше уверенности и мотивации, и они сами будут готовы генерировать идеи во благо, без палки даже.
    ...

    P.S. Я уже не там, да и вообще круто(от слова "резко") поменял стек технологий. Но ценю тот опыт, который смог там получить.
    Ответ написан
  • Какие разновидности MVC существуют?

    @lega
    MVC, MVVM, MVP, FLUX, REDUX, HMVC, MVPVM, PAC, VVM, V... а по сути все это "болтология".
    Ответ написан
  • Как исправить это регулярное выражение?

    @abcd0x00
    Используй lxml.html для разбора html.

    >>> import lxml.html
    >>> 
    >>> s = """<input type="hidden" name="Sample" value="0">"""
    >>> 
    >>> node = lxml.html.fromstring(s)
    >>> node
    <InputElement b74340ec name='Sample' type='hidden'>
    >>> node.attrib
    {'type': 'hidden', 'name': 'Sample', 'value': '0'}
    >>>


    Если же собрался использовать регулярки, то надо сделать в два этапа: 1) сначала выделить все нужные теги, которые будешь разбирать; 2) затем из выбранных тегов уже выбирать атрибуты. Возможно, понадобятся две регулярки (одна для выбора тегов, другая для выбора атрибутов), но это неважно. Главное, что у тебя разные задачи не должны сливаться в одной регулярке, так как это не только её усложнит (невозможно будет читать), но и приведёт к невидимым ошибкам, из-за которых оно в каких-то случаях будет неправильно разбираться и ты это сразу не заметишь.
    Ответ написан