Pull to refresh
2
0
Send message

Пользуюсь много лет даблом, начиная с линукса, теперь и под маком с виндой. Иногда он действительно тормозит на некоторых операциях, но про фотошом, мягко говоря, Вы загнули

Да, не обратил внимание на заголовок, а в самом курсе не написано

На каждый вид тестирования приходилось создавать свои job в CI и запускать их руками.

Не знаю как там в travis, в teamcity делается нажатием одной кнопочки (опционально, ввести параметры типа бранча/билда, который надо протестировать)


Разработчики отказывались запускать кейсы автотестов самостоятельно.

Автоматический запуск на коммит/билд решит проблему. Разработчик только получит email, если тесты упали


Отсутствие возможности запуска автотестов из любой точки \ устройства.

Это действительно на столько важно? Я лично не могу представить ситуацию, когда вне работы (== нет рабочего устройства под рукой) потребовалось бы запускать тесты


QA инженеры ручного тестирования не могли самостоятельно проводить запуск автотестов.

Настраиваете доступ к CI и вуаля

У argparse есть фишка — сабпарсерам можно задать функцию, которая будет обрабатывать вызов. Благодаря этому, лесенка if-ов в main


        if cmd == "add":
            task = app.add_task(args.title)
            print(task, "created with number", task.number, end=".\n")
        elif cmd == "show":
            app.print_tasks(args.show_done)
        elif cmd == "done":
            task = app.task_done(args.number)
            print(task, "marked as done.")
        elif cmd == "remove":
            task = app.remove_task(args.number)
            print(task, "removed from list.")

сократится до одной строчки args.func(args). Пример из документации:


>>> # sub-command functions
>>> def foo(args):
...     print(args.x * args.y)
...
>>> def bar(args):
...     print('((%s))' % args.z)
...
>>> # create the top-level parser
>>> parser = argparse.ArgumentParser()
>>> subparsers = parser.add_subparsers()
>>>
>>> # create the parser for the "foo" command
>>> parser_foo = subparsers.add_parser('foo')
>>> parser_foo.add_argument('-x', type=int, default=1)
>>> parser_foo.add_argument('y', type=float)
>>> parser_foo.set_defaults(func=foo)
>>>
>>> # create the parser for the "bar" command
>>> parser_bar = subparsers.add_parser('bar')
>>> parser_bar.add_argument('z')
>>> parser_bar.set_defaults(func=bar)
>>>
>>> # parse the args and call whatever function was selected
>>> args = parser.parse_args('foo 1 -x 2'.split())
>>> args.func(args)
2.0
>>>
>>> # parse the args and call whatever function was selected
>>> args = parser.parse_args('bar XYZYX'.split())
>>> args.func(args)
((XYZYX))

Я запомнил только пароль от компьютера и пароль от keepass. Два пароля относительно быстро запоминаются

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


Dark magic delights in Python

После этого все стало на свои места :) Just for fun забавно конечно, но в дайджесте с практичными советами выглядит немного странно...

Конкретно DuckDuckGo показывает рекламу, а также берет комиссию от Amazon и eBay при переходе по ссылкам. Утверждают, что никакой персонализации

Еще и рекламу платного сервиса влепили. Правилами хабра такое запрещено

Settings -> Comments, в списке найдите disqus

Bitwarden можно хостить в собственной инфраструктуре

Если будет хотя бы сравнение, как можно сделать то, что Вас написано, с помощью готовых лексеров/парсеров (в питоне есть ply, sly), и что писать парсеры самостоятельно — не лучшая идея, было бы замечательно. Ведь компиляторы — действительно сложная штука! И если надо по-быстрому набросать свой DSL, кто-то может пойти на хабр, найти подобный туториал и нафигачить все с нуля. Гораздо ценнее было бы почитать, что делать с ast после парсинга. Таких статей, как мне показалось, значительно меньше
P.s. навеяно болью переписывания самописного парсера (предыдущим коллегой) на ply

У encfs есть недостаток — он повторяет оригинальную структуру каталогов/файлов. Соответственно, кто имеет доступ к облаку, может сделать предположение о том, что у Вас хранится. Поэтому, появился такой проект — cryfs, который ориентирован на работу с облачными хранилищами: хранит файлы чанками одинакового размера без сохранения иерархии. Правда, когда я его тестил, обнаружил неприятную "особенность" — по дефолту чанки слишком маленькие, и создается безумное количество файлов, которые нереально долго синхронизируются. Аналогичную проблему решает cryptomator. С дропбоксом работает ок.


P.s. изначально я искаль альтернативу encfs из-за его ограничения на длину файлов (190 символов), которое не будут никак фиксить, т.к. 1 версия не развивается дальше, ведется разработка 2 версии

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

C++ за 9 месяцев?

Ну хоть не за 21 день!


Смех смехом, но 9 месяцев на С, C++, линукс, гит, структуры и алгоритмы — что-то невероятное

У ProtonVPN можно сделать free аккаунт (пониженная скорость, 1 девайс, 3 страны на выбор) — вот такой эксперимент у нас мог бы взлететь. Да еще и странный ценник 10$ — у них на выбор 4/8/24$

В статье ведется речь про Евросоюз, однако, на КДПВ фото часов из Швейцарии — страны, которая не входит в ЕС

Например, сканирует список процессов, чтобы показывать в статусе, в какую игру играет пользователь, рисовать оверлей. Плюс собирает некоторую телеметрию

"Адекватная" реклама в твиче. Т.к. в приложение не установишь адблок, приходится смотреть, но отвращения не вызывает. Большинство новостей читаю в телеграме. Реклама там текстовая, с пометками #партнерский и т.п. Благодаря этому, раздражения не вызывает, в отличие от Яндекс.директа и прочей дичи на просторах интернета.


П.с. блокировщиками пользуюсь принципиально. Плачу подписки, донаты, патреоны

Information

Rating
Does not participate
Registered
Activity