• Самое эффективное перемещение по документу -vim?

    @Stqs
    senior software developer
    b и w уже отменили чтоли?
    Ответ написан
    Комментировать
  • PEP 8: Метод класса перед свойствами?

    @Stqs
    senior software developer
    exctac,

    1) нужно выпилить pep-8 из тегов
    2) тут вопрос не в конвенциях а в логике вашего приложения
    если функция get_default_sound по сути статическая или должна шариться между классами - то почему бы не иметь ее в одном экземпляре на уровне модуля
    если же она ни с кем не шарится - желательно не выносить ее за область видимости класса
    как говорили классики "держите определение как можно ближе к использованию". это касается не только расположения строчек кода но и расположение в стопке областей видимости

    так что как по мне то тут вопрос не в соглашениях а именно в архитектуре вашего приложения
    если хотите быть consistent с django то вот взгляните например сюда
    https://docs.djangoproject.com/en/2.0/ref/contrib/...
    тут как раз оба варианта представлены

    class A(object):
    
        @staticmethod
        def get_val():
            return 42
    
        val = get_val.__func__()
    
    
    print A.val
    Ответ написан
    Комментировать
  • Django. Как (программно) сгенерировать ссылку reset password и отправить её на email пользователя из кастомной вьюхи?

    @Stqs
    senior software developer
    я бы слал и генерированный пароль и в этом же письме ниже кнопку смены пароля
    захочет - пойдет поменяет
    Ответ написан
    Комментировать
  • Почему None при вызове метода super().__add__()?

    @Stqs
    senior software developer
    если return в функции не указан - то по умолчанию всегда возвращается None
    Ответ написан
    Комментировать
  • Как понять откуда появляется майнер?

    @Stqs
    senior software developer
    Виталий Р,

    1)я бы попытался обновить ось если конечно это допустимо
    2)отключаем ssh по паролю вообще
    оставляем только по ключам
    меняем дефолтный порт с 22 на какой-то другой
    3)делаем ревизии имеющегося барахла ( конечно нас интересует те части системы которые хоть как-то выглядывают наружу) - нужно иметь список подозреваемых. то есть грубо говоря netstat'ом смотрим список открытых портов
    маппим их в процессы
    смотрим что это за процессы и выясняем насколько это ПО устаревшее и дырявое

    дальше идем по списку тулзов/фремворков которые мы отревизили и пытаемся по базам уязвимостей найти чтото интересное для нашей версии продукта
    если там действительно жопа и уязвимостей уже куча - то деваться некуда придется обновлять ПО

    ответ конечно не исчерпывающий потому как оно все очень depends
    но я так понимаю вы вообще в растерянности и не знаете с чего начать
    так что первое правило - нужно узнать по-максимуму все о своей системе и нужно олицетворить зло (то есть узнать с каким конкретно ПО мы имеем дело на данном конкретном сервере)
    дальше проще пойдет

    если время позволяет - разобраться бы от какого пользователя все это барахло запущено
    может быстро получиться порубать права кому-то и опять же получить максимально быстро какой-то результат
    Ответ написан
    6 комментариев
  • Как быстро добавить 200к строк в MySql?

    @Stqs
    senior software developer
    из .txt генерируем .sql
    в котором длиннющий
    INSERT INTO MyTable ( Column1, Column2 ) VALUES
    ( Value1, Value2 ), ( Value1, Value2 )

    и потом скармливаем его в MySQL
    Ответ написан
  • Где взять опыт Python, как попасть на стажировку?

    @Stqs
    senior software developer
    вы к сожалению находитесь в "замкнутом круге выпускника"
    без опыта - не берут
    не берут - нет опыта

    в вашем случае все осложняется тем что вы не можете прорваться даже сквозь HR
    к сожалению они зачастую просто являются био-роботами которые надрочены на определенные keywords которые они ожидают от вас услышать
    не услышали - давай да свидания (в вашем случае - они не услышали что у вас есть опыт)

    поэтому нужно что? пытаться обходить их
    обычно в больших городах существуют программерские или околоайтишные сборища типа митапов
    там можно набраться нужных связей, пообщаться с людьми
    там же обычно можно встретить еще кучу эйчаров которые пришли туда как раз ловить рыбу большими сетями - и им должно быть интересно с вами пообщаться или взять на карандаш
    после обычно люди идут куда-то квасить - это ваш шанс

    про опыт
    опыт можно получить даже не работая в кампаниях
    можно поучаствовать в каком-нибудь open-source проекте
    и будет что показать и будет о чем на собеседовании поговорить
    и вообще хорошая тема для очистки кармы нещадно загрязненной 1с-ом

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

    кароче тезисно
    1) не говорим всей правды эйчарам, выставляем все хорошее, молчим про все плохое
    2) пытаемся влиться в тусовку где можно выхватить хоть какой-то референс от уже работающих людей - это уже половина успеха
    3) участвуем в opensource
    4) ну и продолжаем долбиться все кампании помельче да постремнее - задача то не работу мечты найти а просто вырваться из замкнутого круга
    Ответ написан
    3 комментария
  • Почему не отрабатывает php-скрипт по обращению из крона?

    @Stqs
    senior software developer
    файл ф скрипте имеет не асболютный путь
    поэтому при запуске скрипта кроном он все правильно пишет в файл
    только одному крону известно где этот файл лежит
    Ответ написан
    Комментировать
  • Где было бы корректно обрабатывать данные, на стороне БД или ЯП?

    @Stqs
    senior software developer
    nobodywithbody,

    я бы делал всю логику в коде и начал бы со следующих шагов

    В базу:
    - берем выборку самых тормозных запросов
    далее EXPLAIN в руки и выясняем где что тупит)
    - делаем индексы (с умом) если нужно
    - делаем вьюшки (если нужно) в базе что б не работать с совсем сырыми данными
    - даты на стороне базы не конвертируем - это тоже очень медленно будет

    В коде:
    - профайлер в руки и профилировать, профилировать, профилировать
    - используем методы динамического программирования (у вас задача практически классическая)
    - если все равно тормозит как вариант наколбасить что-нить типа сишной либы для этой конкретной задачи и дергать ее из хпх
    Ответ написан
  • Как правильно обработать исключение?

    @Stqs
    senior software developer
    chistya,

    а чо try-except отменили уже?
    Ответ написан
    Комментировать
  • Правильная настройка локального git репозитория?

    @Stqs
    senior software developer
    Роман,

    Мужик, я ни хера не понял, что ты сказал мне, но ты мне близок. Ты заговорил и достучался до сердца (с)

    если Вам нужно включить один гит репозитарий в другой то используйте https://git-scm.com/docs/git-submodule
    если же Вам нужно что бы один и тот же локальный ссылался на несколько удаленных - тогда добавьте дополнительный remote к существующему репозиторию

    хотя я таки не совсем понял что именно Вы хотите
    Ответ написан
    Комментировать
  • Ошибка при установке Anaconda2?

    @Stqs
    senior software developer
    ну у вас жеж небось и пользователь кириллицей написан
    и папки все кириллицей написаны
    и вообще у вас винда
    Ответ написан
  • Как заменить элементы списка Python?

    @Stqs
    senior software developer
    AlmazKayum,
    строки - неизменяемый тип данных
    Ответ написан
  • Как настроить автоматическое удаление ветви VS?

    @Stqs
    senior software developer
    1) это нормально
    компьютер всегда делает/показывает именно то что есть на самом деле, он никогда вас не обманывает
    то что это не совпадает с вашими ожиданиями - обычно результат ошибочных представлений о механике вещей

    2) и да и нет
    разницы не будет пока вы не разберетесь с тем что существует remote репозиторий и ваша склонированная local верия этого репозитория
    и если вы удаляете ветку из remote то с какой стати она должна пропасть из локальной версии автоматически? нужно как минимум сделать pull
    то же самое с удалением ветки локально
    вы можете это сделать но это не означает что что-то автоматически произойдет с remote репозитарием
    то есть нужно сделать 2 вещи
    - удалить локальную версию
    git branch -d branch_name
    - пропихнуть это изменение в remote
    git push <remote_name> --delete <branch_name>
    Ответ написан
  • Движок для создания миров?

    @Stqs
    senior software developer
    minecraft?
    Ответ написан
    Комментировать
  • Как взять большое количество данных за промежуток времени?

    @Stqs
    senior software developer
    В общем Flask тут не причем
    Нужно разобраться с архитектурой такого рода задач
    То что вы уже сделали - это только лишь слой представления(View) данных
    Это все круто, но эта часть не должна заниматься сбором данных. Она должна читать их из какого-то хранилища в уже готовом виде.

    Сбором данных должна заниматься другая система
    Если вам хочется питон и не сильно хочется выдумывать велосипеды - я бы рекомендовал взять scrapy и нафигачить там нужных скреперов. В нем же можно организовать pipeline - в котором определить что делать с полученными данными.
    Тут есть много путей но я бы рекомендовал вам наиболее простой - писать данные из scrapy в базу данных например mysql, а оттуда уже читать данные в вашем flask-приложении.
    В зависимости от объемов может оказаться, что предложенное решение не эффективно.
    Так как по сути вы интересуетесь сбором метрик то в боевых условиях я бы рекомендовал использовать специализированные инструменты для сбора и отображения метрик (например связку graphite-grafana)
    Вряд ли Ваша связка mysql-самописнаявебморда переплюнет их по производительности качеству и стабильности.
    Так что все действительно зависит от объемов и категории задачи ( я имею в виду "это завтра пойдет в продакшн" или "вот для себя пишу разбираюсь")
    Ответ написан
    5 комментариев
  • Как заставить дефолтные значения аргументов функции вычислятся каждый раз?

    @Stqs
    senior software developer
    как-то так
    from random import randint, uniform
    
    def argrandomizer(func):
        def wrapper():
            arg_1 = uniform(0.8, 2.2)
            arg_2 = randint(-3, 3)
            arg_3 = randint(-3, 3)
            return func(arg_1, arg_2, arg_3)
        return wrapper
    
    @argrandomizer
    def my_func(arg_1, arg_2, arg_3):
        print( arg_1 )    
        print( arg_2 )
        print( arg_3 )
    
    my_func()
    my_func()
    my_func()

    вывод
    1.48763356514
    -3
    -3
    2.07023550873
    -2
    3
    1.48356419425
    -2
    -1
    Ответ написан
    9 комментариев
  • Как изменить время события используя logging и SysLogHandler в python?

    @Stqs
    senior software developer
    не нужно такое делать
    syslog имеет определенную структуру не просто так
    многие тулзы(например для сбора метрик и собственно логов) умеют автоматически парсить такие файлы именно потому, что формат этих логов стандартизирован
    Ответ написан
    Комментировать
  • Что может быть не так при работе со списком в Python?

    @Stqs
    senior software developer
    загуглите про изменяемые и неизменяемые объекты (mutable vs immutable)
    Ответ написан
    Комментировать
  • Как отпарсить чужой сайт?

    @Stqs
    senior software developer
    ну если знаете питон то вот это покатит https://scrapy.org/
    Ответ написан
    Комментировать