• Как правильно с точки зрения ООП?

    lxsmkv
    @lxsmkv
    Test automation engineer
    То что вы сделали похоже на шаблон Factory (передаем параметры обьекта на вход, получаем обьект на выходе). https://ru.wikipedia.org/w/index.php?title=Factory
    Все что по шаблонам - все фен-шуй. Другой вопрос выгодно ли применять тот или иной шаблон для конкретной задачи.
    Ответ написан
  • Почему в очереди не используется нулевой индекс в массиве?

    lxsmkv
    @lxsmkv
    Test automation engineer
    если очередь пуста указатель getLoc имеет значение 0. Т.е. указывает на нулевой элемент. При добавлении элементов указатель смещается каждый раз на единицу вперед.
    Если бы мы начинали класть элементы начиная с нулевого элемента, то пришлось бы что нибудь придумывать чтобы обозначить пустую очередь. Можно было бы поставить getLoc на -1.
    В данной реализации, если очередь пуста, возвращаемое значение при запросе будет 0. Это как бы специальное значение-маркер. Однако есть побочный эффект от такой реализации. Если функция get будет использоваться где-то, то нужно будет всегда помнить о значении 0. Иначе можно будет подумать, что в очереди содержится элемент 0.

    Более явной на мой взгляд была бы реализация с использованием boolean isEmpty и выбрасыванием исключения при попытке получить последний элемент в пустой очереди.
    Ответ написан
    Комментировать
  • Как обработать очередь фиксированного размера?

    lxsmkv
    @lxsmkv
    Test automation engineer
    эта задача называется проблема производителя-потребителя или проблема ограниченого буфера, явлется классической проблемой многопроцессной синхронизации. В интернете есть примеры решения на Java. ( Поищите например "producer consumer java")
    Тут можно почитать про возможные подходы к решению https://en.wikipedia.org/wiki/Producer-consumer_problem
    Ответ написан
  • Какие тайминги у iMac 27` late 2015?

    lxsmkv
    @lxsmkv
    Test automation engineer
    Единственные требования к памяти указаные на оф. сайте
    https://support.apple.com/ru-ru/HT201191
    это:
    • PC3-14900
    • Без буферизации
    • Без контроля четности
    • 204 контакта
    • DDR3 SDRAM, 1867 МГц

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

    lxsmkv
    @lxsmkv
    Test automation engineer
    По поводу "нестандартного" мышления и подхода это однозначно Dan Ariley - Freakonomics, The (Honest) Truth About Dishonesty, и все остальные его книги думаю можно читать.
    Еще можно Николаса Талеба почитать.
    Рекомендую также ознакомиться со статьей на википедии "Список конгитивных искажений". Помогает иногда понимать причины поступков и решений.

    Ну и так "наугад" еще кое что:
    Fitzpatrick, Collins-Sussman: Debugging Teams
    Barbee Davis: 97 Things Every Project Manager Should Know
    Mary Poppendieck: Implementing Lean Software Development From Concept to Cash
    Michael K. Levine: A Tale of Two Systems: Lean and Agile Software Development for Business Leaders
    Вайнберг: Психология программирования
    Ответ написан
    2 комментария
  • Как наилучшим способом протестировать программу?

    lxsmkv
    @lxsmkv
    Test automation engineer
    если система имеет интерфейсы и новый функционал строится используя имеющиеся интерфейсы, то "сломать" систему невозможно. Интерфейсы на то и интерфейсы.
    https://habrahabr.ru/post/30444/
    Ваша задача - гарантировать неизменность интерфейсов. Для этого нужно код покрыть юнит-тестами, которые бы указывали разработчикам если рефакторинг нарушает существующий интерфейс. Еще есть конечно опасения, что не имея представления об имеющихся функциях будут строить велосипед рядом. Но тут нужно предоставить документацию.
    Ответ написан
    Комментировать
  • Написание собственного WM. Куда копать?

    lxsmkv
    @lxsmkv
    Test automation engineer
    Комментировать
  • Лучшие источники информации для QA?

    lxsmkv
    @lxsmkv
    Test automation engineer
    Cem Kaner, James Bach, Lisa Crispin, Dorothy Graham - книги, видео
    Наталья Руколь - видео.
    Сам пришел в профессию насмотревшись лекций Джеймса. Он очень крутой гуру.
    Ответ написан
    Комментировать
  • Как правильно писать функциональные тесты для сервисов на scala?

    lxsmkv
    @lxsmkv
    Test automation engineer
    тестирование веб-фронтэнда -> Selenium.
    Есть вот проект ScalaTest (Selenium + Scala в связке) - это то что вам нужно.
    www.scalatest.org/user_guide/using_selenium
    Даже "безбашенное" тестирование можно делать:
    https://blog.knoldus.com/2015/07/18/headless-brows...
    Ответ написан
    Комментировать
  • Пути создания виртуального тренажера?

    lxsmkv
    @lxsmkv
    Test automation engineer
    Принцип реализации такой же как при разработке двухмерных игр. Счетчик времени, графика, анимация, реакции на нажатия клавиш и мыши. Так что считайте, что вы будете писать игру, и исходя из этого ищите как это делается на языке программирования.
    И да, питон не самый удобный выбор, если надо по-быстрому запилить игру, хоть и не самый безнадежный. Я бы, пожалуй, тоже предпочел js/html, кроме названых причин, еще и потому, что возможность пользоваться обучающей программой просто имея доступ в интернет, ничего не устанавливая - сильный плюс.
    Ну и конечно удобно, что js/html игру можно разобрать по косточкам, просто заглянув в исходный код вебстраницы, если захочется решение перенять. И материала, как делать игры на js/html очень много, это сегодня модно и не делает этого только ленивый.
    Вот посмотрите https://www.youtube.com/watch?v=iGCMkmnm89M (серия туториалов), я уверен, вы быстро освоитесь. JavaScript никак не сложнее питона.
    И еще есть сервисы типа jsbin.com и jsfiddle.net чтобы попробовать наброски кода.
    Ответ написан
  • Как хранить табличные данные для Python?

    lxsmkv
    @lxsmkv
    Test automation engineer
    CSV конечно подойдет (уже упоминали). Работа с CSV вообще встроена в базовые библиотеки,так что ничего инсталлировать даже не придется (это преимущество больше на тот случай если скрипт на каком нибудь чужом сервере нужно будет выполнять, где просто так никакой pip не запусить). И экспорт/импорт для CSV в экселе есть.
    Конечно есть и библиотеки для питона чтобы работать с файлами эксель напрямую, openpyxl например.
    Ответ написан
    Комментировать
  • С чего начать изучать функциональое программирование джависту?

    lxsmkv
    @lxsmkv
    Test automation engineer
    A как же наш родной Kotlin? kotlinlang.org
    все можно потрогать не выходя из браузера try.kotlinlang.org
    материала о нем дофига и на ютубе и на хабре.
    можно потыкать документацию:
    - https://kotlinlang.org/docs/reference/lambdas.html
    - https://kotlinlang.org/docs/reference/functions.html
    Он не чисто функциональный, а имеет функциональные свойства.
    Компилируется в байткод, и позволяет смешивать код с явой (как минимум пользоваться всем JFC),
    так что не придется покидать зону комфорта.
    Ответ написан
    4 комментария
  • МОжно ли сделать передачу данных в форму?

    lxsmkv
    @lxsmkv
    Test automation engineer
    selenium же ;-)
    0. python -m pip install selenium;
    качаем, geckodriver https://github.com/mozilla/geckodriver/releases
    вынимаем из архива, прописываем его место нахождения в PATH
    1. пишем скриптик
    from selenium import webdriver
    from selenium.webdriver.common.keys import Keys
    from selenium.webdriver.common.desired_capabilities import DesiredCapabilities
    from selenium.webdriver.firefox.firefox_binary import FirefoxBinary
    import os
    binary = FirefoxBinary(r'C:\PortableApps.com\PortableApps\FirefoxPortable\App\Firefox\firefox.exe')
    driver = webdriver.Firefox(firefox_binary=binary)
    driver.get("https://perevod.mtbank.by/")
    elem = driver.find_element_by_name("from0")
    elem.clear()
    elem.send_keys("1234234563456456723")	
    elem1 = driver.find_element_by_name("to0")
    elem1.send_keys("1234234563456456723")
    driver.close()

    2. Допиливаем пример напильником
    3. ...
    4 PROFIT
    Ответ написан
    2 комментария
  • Какие существуют ресурсы со сложными задачками на программирование?

    lxsmkv
    @lxsmkv
    Test automation engineer
    codefights.com
    codewars.com
    Ответ написан
    Комментировать
  • Как правильно генерировать псевдослучайные числа?

    lxsmkv
    @lxsmkv
    Test automation engineer
    возьмите последовательность чисел от 0 до n, возьмите за шаг любое простое число p > n/2, и вынимайте из последовательности каждое число за номером p по кругу.
    Но и тут последовательности. А вам я так понял нужно чтобы оно "создавалось" а не выбиралось.
    Хоря, что плохого в выбирании, ведь карты из неотосортированной колоды тоже выбирают, и ничего, такой выбор считается случайным. A так на основании системного времени. Или белого шума радиочастоты. Или из сервиса на random.org. Если ваш алгоритм будет проходить тест diehard - отпишитесь, всем будет интересно ;)
    Ответ написан
    Комментировать
  • Ввод с клавиатуры в Java?

    lxsmkv
    @lxsmkv
    Test automation engineer
    https://docs.oracle.com/javase/7/docs/api/java/uti...

    Ввод с клавиатуры осуществляется посредством создания объекта типа сканнер на потоке System.in (именно System.in, это важно, там ведь есть и другие конструкторы.)
    Scanner sc = new Scanner(System.in);
    и вызовом подходящего метода для получения необходимых частей из введенной строки. Так next() возвращает первый токен (слово), а nextLine() возвращает всю строку и.т.д. (там еще куча разных методов, см. API по ссылке)
    Вот простейший пример работы:
    (Разумеется import java.util.Scanner; необходимо в заголовке файла писать. )
    Scanner sc = new Scanner(System.in); //создали сканнер 
    System.out.println(sc.nextLine()); //вывели строку которую сканер получил с клавиатуры (т.н. эхо)

    Можно не выводить, тогда sc.nextLine() вернет значение вникуда.

    Теперь, каждый раз когда будет вызываться метод на обьекте sc будут считываться данные с командной строки. Просто создать сканер ничего не даст, приглашение для ввода, появляется только когда вызывается метод
    Ответ написан
    Комментировать
  • Как задать тип входного параметра в pycharm?

    lxsmkv
    @lxsmkv
    Test automation engineer
    в докстринге написать
    @type my_param: typename
    класс (если typename имеет тип класса) должен быть известен, т.е. импортирован

    или так https://www.jetbrains.com/help/pycharm/2016.1/usin...
    Ответ написан
    Комментировать
  • Что с кодом этим?

    lxsmkv
    @lxsmkv
    Test automation engineer
    from bottle import route, run, template, response
    import random
    
    
    @route('/reg/<name>/<pw>')
    def index(name, pw):
      cookie_hash = random.randrange(10000000000)
      response.set_header('Set-Cookie', 'cookie_hash=%s' % (cookie_hash))
      return template('<b>Hello {{name}}, {{hash}}, {{pw}} </b>!', name=name, hash=cookie_hash, pw=pw)
    run(host='localhost', port=8080)

    у меня этот код работает, даю запрос на localhost:8080/reg/bottle/neck
    смотрю в хедер ответа в файрфоксе - значение пишется в cookie_hash, именно то, которое было сгенерировано. Все пучком.
    Ответ написан
    Комментировать
  • Какой из двух ноутбуков выбрать?

    lxsmkv
    @lxsmkv
    Test automation engineer
    Не процессор будет систему тормозить а жесткий диск. Так-что, что бы вы не выбрали замените магнитный жесткий диск на твердотельный накопитель. С быстрым диском и 2 Гигагерца расцветут как сирень в мае. А со слабым диском и 4 ГГц будут зря тухнуть. Ну и Full-HD дисплей стоит взять - дисплей не заменишь. На 1366х768 рабочая область программы будет болезненно напоминать вам от том, что вы зря сэкономили. Дискретную карту я бы тоже предпочел. Мощный графический чип нужен не только для игр, оно сегодня и в браузере используется для рендеринга страниц и веб приложений на JavaScript/HTML5. Программ масса с аппаратным ускорением. Не пожалеете.
    Ответ написан
    1 комментарий