• Почему может расти потребление памяти Scrapy?

    YardalGedal
    @YardalGedal Автор вопроса
    yeah boy
    В общем, на сколько я понял, память у меня и не текла.

    Проблема в алгоритме, который в методе parse() и настройках, которые я использовал для парсинга. Значения конкуретных запросов и тредов у меня слишком высоки, а значение DEPTH_PRIORITY было установлено по-умолчанию (0).

    Таким образом получалось, что страницы поиска парсились быстрее, чем генерировались айтемы на основании записей с них, создавалась длинная очередь и память переполнялось. Помогла установка значения DEPTH_PRIORITY = 1.
    Однако скорость парсинга, к сожалению, снизилась.
    Старт двух спайдеров в двух разных процессах немного улучшил ситуацию.
    Ответ написан
    Комментировать
  • Какое ПО использовать в качестве песочницы для команды веб-разработки?

    opium
    @opium
    Просто люблю качественно работать
    Очевиден отказ от этой радуги и переход на докер
    Ответ написан
    Комментировать
  • Куда податься на фрилансе?

    apavlyut
    @apavlyut
    www.pavlyut.ru
    Зачем тебе апворк - иди на freelansim.ru, или если хочешь посражаться с нашими индусами тогда и на fl.ru

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

    Так что работать лучше на своей языковой и культурной базе в данном случае (ты не компания которая расширяет рынки присутствия, и разумеется западный рынок шире, поэтому туда как бы надо идти).

    Открой сайт и бери свои заказы на дошик - там их точно тебе хватит.

    Но тебя, мой юный (во фрилансе) друг, ждет множество прекрасных открытий о том что работая на кого-то, ты куда быстрее выполнишь свою цель о "спокойной работе в нормальных условиях за гарантированные какие-то деньги", которую ты почему-то видишь в своем доме.

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

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

    Удачи!
    Ответ написан
    3 комментария
  • Что нужно знать чтобы стать начинающим системным инженером (devops)?

    Singaporian
    @Singaporian
    Статья, которую должен прочитать каждый.

    DevOps - не профессия. Это название культуры доставки кода от разработчика (dev) через тестировщиков и до сисадмина(ops) и обратная связь по этой цепочке.

    Человека, который внедряет DevOps, обычно называют... как хотят. Чаще всего этим занимается какой-нибудь нон-конформист в команде.

    Профессии, которые отрисуются в процессе построения этой методологии следующие:
    • Build Engineer - инженер, который управляет зависимостями, сборками, конфликтами кода.
    • Release Engineer - инженер, который управляет репозиторием кода (кто куда и по каким правилам мерджится и откуда бренчуется). Пожалуй, это самая сложная задача в больших проектах. Особенно с нестрогим Agile или в Waterfall.
    • Automation Engineer - инженер, который занимается автоматизацией рутинных задач. Обычно деплоймент, автотесты, etc. Все эти buzz-слова типа Docker - его инструментарий.
    • Site Reliability Engineer - инженер, который поддерживает ops (апгрейды, расширение железа)
    • Configuration Manager - непонятная мне специальность. Жуткое порождение HR-специалистов, давящих на громкое название позиции. Можно было бы пойти дальше и назвать специальность ZooKeeper Vice President

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

    Почти всегда все эти роли совмещают один-два человека. Ну это зависит от качества кода.
    Назовем эту компанию BRAE/CM для краткости.
    Задача BRAE/CM состоит в том, чтобы программный код, который выходит из под пера программистов, оставался на контроле программистов и сисадминов одновременно. Программисты, равно как и сисадмины, благодаря DevOps-подходу, имеют возможность и даже обязаны обслуживать код на протяжении всего жизненного цикла от планирования архитектуры до мусорки.
    То есть сисадмины начинают рулить еще до того, как код попадет к ним - на ранних стадиях, а программисты продолжают рулить своими задачами уже после того, как код от них ушел к сисадминам - на поздних стадиях. И все это прозрачно друг для друга и все проблемы и решения ходят туда сюда и не спотыкаются о бюрократия в стиле "ничего не знаю, мы код уже закоммитили, у меня тут свои проблемы, у них сломалось - пусть сами и чинят".

    Так вот эта работа - завершающая стадия системного администратора и начинающая стадия разработчика. Поэтому не бывает Junior BRAE/CM.
    BRAE/CM бывает всегда только Senior в системном администрировании и всегда Junior в программировании.

    Еще один момент. В домашних условиях можно выучить инструменты на базовом уровне. Но не поварившись в одной кастрюле с реальными разработчиками, смысл всей этой кухни не понять. Так что сразу забейте. Но если хотите, могу описать пошаговый длинный путь как стать RE/CM:

    Сразу оговорюсь по языкам.
    У каждого языка свое предназначение. Java чаще используется в корпоративном секторе. Там много серверов и сложные бизнес-приложения. Поэтому Java-мир очень чувствителен к таким понятиям, как "технинческий долг" и "управление процессом разработки". И именно поэтому именно там все основные вакансии DevOps и именно там будет самый интересный опыт.
    Кроме Java, традиционно сильная DevOps-культура у Ruby. Практически все остальные языки не имеют столь развитой и популярной инфраструктуры в в данном контексте и потому вам скорее всего будут неинтересны.
    Другими словами, если в среде разработчиков выбор языка - тема для холивара и эмоций с миллионами сравнительных анализов с противоположными результатами, то для специалистов по DevOps выбор очевиден и прозрачен. Java - это одновременно самые интересные задачи, самый богатый toolset, самый большой выбор вакансий и самые высокие зарплаты.

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

    Итак, что делать:
    1) Почитать книги Head First по Java. Пройти курсы Java на EDX.
    2) Освоить SVN. Есть прекрасные тьюториалы. (GIT освоим позже)
    3) Поставить VirtualBox (не VMWare!!!)
    4) Написать простенькое приложение. Код коммитить в SVN. Собирать его при помощи maven.
    5) Поднять на отдельной виртуалке Jenkins. Он должен брать код приложения на SVN и запускать свой локальный maven для сборки.
    6) Написать модульные тесты (unit tests) своего кода. Пусть maven и их прогоняет.
    7) Поднять где-нибудь Nexus. Усложнить задачу maven, чтобы он теперь складывал все в Nexus. Если maven'у потребуются внешние библиотеки, он тоже не сам должен ходить в интернет, а через Nexus (Central repo).
    8) Настроить на своем десктопе vagrant так, чтобы он с нуля создавал виртуалки VirtualBox.
    9) Создать виртуалку DEV через vagrant. При этом ansible должен на ней что-нибудь настроить (например установить JDK)
    10) Научиться деплоить jar/war из Nexus на виртуалку DEV чем-нибудь. Чем - не посоветую, так как сам работаю с очень сложным IBM uDeploy, а это точно не для новичка. Посмотрите в сторону Rundeck или чего-то такого. Может самим Jenkins'ом задеплойте.
    11) Напишите интеграционные АВТОтесты. На чем хотите (как вариант: Selenium).

    Усложняем систему.
    12) Донастраиваем Jenkins: собирает maven-проект; выкладывает на Nexus; дергает vagrant/ansible для создания виртуалки SIT (system integration test); деплоит приложение на SIT; прогоняет автотесты на SIT; удаляет виртуалку после успешного завершения автотестов.
    13) Прикручиваем SonarQube в Jenkins для статического анализа кода. Исправляем косяки своего кода, согласно полученным от SQ рекомендациям.
    14) Прикручиваем мониторинг Sensu.
    15) Пишем нагрузочные тесты на чем-нибудь. В идеале потрогать два инструмента: jMeter и Gatling.
    16) Как и в 12-м шаге прикручиваем в Jenkins автоматизацию создания виртуалки SLT (Stress/Load test) и прогона на ней тестов. Только уже лоад-тестов(обязательно) и стресс-тестов(опционально) соответственно.
    17) Дописываем в свое приложение какой-нибудь функционал, чтобы использовалась база.
    18) Придется познакомиться с LiquiBase. Деплой SQL руками делать запрещено.
    19) Перейти на Docker (то есть теперь приложение выкладывать не напрямую в ОС, а внутрь докера)

    20) Денек на то, чтобы почитать про Agile, Scrum, Waterfall и прочие организационные порядки.

    А теперь немного уходим в управление проектом:
    21) Поставить Atlassian Jira. Разобраться, чем отличаются Epic, Story, Task, Sub-Task. Создать себе подобной этой структуре фронт работ (делать его не придется, просто нафантазируйте).
    22) Поставить Atlassian Stash и связать его с Jira.
    23) Переехать со своего SVN на GIT, предоставленный Stash'ем.
    24) Пройти Git-тьюториал какой-нибудь. Инструмент очень нетривиальный.
    25) Взять любую таску в работу. При этом в начале работы сделать новый Git branch из тикета Jira.
    26) По завершению работы запустить всю построенную ранее цепочку, но уже для своего брэнча.
    Дайте попробую угадать: вам пришлось скопировать все джобы и переписывать в них ветки?
    27) Сделать джобы нормально. Чтобы одни и те же можно было использовать для любых веток - по аналогии с принципом программирования "reuse code". У Вас будет reuse job :)
    28) Сделать pull request, самому сделать code review и самому себя же за-approve'ить. После этого сделать merge своей ветки в master.
    29) Сделать сборку брэнча автоматической по git-hook (или SCM pool)

    30) А теперь высший пилотаж: к чертям Docker, Copistrano и прочую buzz-word-hipsters-галиматью. Теперь вы с этим знакомы и сможете применить, но пришло время выгрызать этот детский сад калёным железом. Теперь вы доставляете код только как .deb-пакеты. Это значит, что вы:
    a) разбиваете control-файл на несколько пакетов, возможно с lib*,
    b) оверрайдите все ~20 dh_ в файле rules так, чтобы все это соответствовало вашим наработкам в предыдущих пунктах.
    c) раскидываете файлы по .install
    d) самое тяжелое: готовите .preinst, .postinst, .prerm, .postrm файлы СОГЛАСНО ИХ ПРИМЕРАМ .ex, сгенерированным dh_make - то есть с разбиемнием на update/configure/broken-install и что там еще есть. Это означает, что при переустановке, при апгрейде, при даунгрейде, при удалении и при пурдже, у вас будут разные сценарии, каждый из которых должен быть проработан досканально. На этом этапе вы также познакомитесь с понятием "регрессионные тесты".

    Ну как бы базовый вариант вот. Но это далеко не весь инструментарий и путь. Это так, для начала.
    Кроме этого неплохо бы познакомиться с Puppet (это не очень подходит для DevOps, скорее для рядовых админов с кучей серверов, но это очень популярный инструмент ввиду того, что никто не понимает, что такое DevOps и вас скорее всего заставят управлять сотней серверов, вместо релиз инжиниринга). А так же нужно познакомиться с операционными системами NixOS (обязательно) и CentOS/Debian (опционально, но я бы палкой бил тех, кто не знает эти OS). Кроме того, надо базово ориентирваться в PostgreSQL.

    Внимание, важный момент, который должен быть вшит на уровень подсознания у DevOps-ориентированного инженера: вы все время пробуете новые инструменты. Вы всегда будете находить что-то очень отличное. Знаете Nexus как свои пять пальцев и он решает почти все проблемы? Отлично! Теперь выкидываете Nexus и ставите Artifactory. Знаете хорошо CentOS? Круто! Теперь пробуете все это проделать на Windows или Debian. Потому что только когда вы сможете сравнивать инструменты, ваша работа будет ювелирной. А DevOps бывает либо ювелирным, либо он не DevOps. Вы должны быть языко-независимым, платформо-независимым и инструменто-независимым.

    Что будет дальше? Дальше вы начнете работать с микросервисами (сотни одинаковых контейнеров в облаке, которые должны как-то работать друг с другом без ручной конфигурации). Тогда познакомитесь со всякими Consul, ZooKepper и кучей инструментов AWS/OpenStack.
    Ответ написан
    13 комментариев
  • Стоит ли работать на удалёнке по ИП C# программистом?

    @yayashitoya
    Предлагают "в белую", это плюс.

    ИП чем отличается от постоянного трудоустройства как сотрудника:

    1) Отпускные, больничные - за ваш счет. Отпускные в ИП можно заложить, увеличив сумму.
    2) Это не зарплата, которую нельзя отсудить назад, если вы не выполнили условия договора.

    В остальном разницы нет.
    Разумеется, нужно не забыть заложить сумму налогов сверх основой зарплаты.

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

    sim3x
    @sim3x
    Представим библиотека обновляется и некоторые ее методы либо изменили название
    unit test case

    еще хуже свое поведение.
    unit test + functional test case

    каждом добавлении новой библиотеки
    не использовать библиотеки не покрытые тестами
    Ответ написан
    Комментировать
  • Как скачать автоматические субтитры на английском языке с youtube?

    Gorily
    @Gorily
    Вот готовое решение:
    google2srt.sourceforge.net/en/download.html
    Только у вас на компьютере должна быть Java: java.com/ru/download/index.jsp
    Запускаете Google2SRT.jar, вставляете ссылку на ролик, выбираете, куда кинуть и Go!

    Еще вариант воспользоваться Fiddler2 с дешифровкой HTTPS.
    И еще один вариант, более быстрый (и не нужно ничего ставить) в комментарии ниже.
    Ответ написан
    1 комментарий
  • Как систематизировать изучение JS?

    Stalker_RED
    @Stalker_RED
    Если это не первый язык, то основы синтаксиса вы быстро освоите.

    Затем встроенные методы работы со строками, массивами, объектами. Это не обязательно зубрить, какой-нибудь Array.forEach и так рано или поздно усвоится, но желательно знать какие вообще методы бывают и где о них почитать подробнее.

    Приведение типов немного отличается от PHP, надо привыкнуть.

    Дальше всякие специфические js штуки, типа замыканий и странноватого this, с ними можно долго возиться.

    Асинхроность отдельным пунктом.

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

    И затем фремворки и библиотеки.

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

    Учебник https://learn.javascript.ru/ неплох, но можно почитать и бумажную книгу какую-то.

    Отдельные темы неплохо расписаны на mdn, но все-же это в первую очередь крутой справочник, а не структурированный учебник.

    Основы языка можно потренировать на codewars. Очень круто, если решаешь задачу не подглядывая, а потом сравниваешь свой код с топовыми ответами и разбираешься почему у них 7 строчек, а у тебя 30. Но надо вовремя остановиться и не увлечься написанием всякой нечитаемой фигни.
    Ответ написан
    1 комментарий
  • Куда движется профессия системного администратора?

    athacker
    @athacker
    Выбирайте то, к чему душа больше лежит. IT Ops останутся навсегда, какие бы облака там не парили над нами. Всё равно полно организаций, которые не доверяют потусторонним конторам хранение своих данных и обслуживание своей IT-инфраструктуры (и правильно делают). Особенно в свете развития законов и методик оповещения об утечках и т. п.

    IT Ops, на мой взгляд, поинтереснее (сам такой потому что), так как задачи разнообразнее. Но в DevOps, например, денег больше платят. Хотя в IT Ops сейчас тоже много из DevOps наприлетало -- Infrastructure as a Code, ansible/chef/puppet, хранение конфигов/плейбуков в VCS, вот это вот всё. И это действительно приводит к тому, что нужно меньше людей, чтобы управлять существенно бОльшими по размеру инфраструктурами. Но и квалификация этих людей тоже должна быть выше, и программерский бэкграунд какой-то тоже нужен. Потому что даже в IT Ops очень много автоматизации, которую нужно писать руками на Shell, Powershell, Python, смотря где как принято.

    Отдельный денежный сегмент -- это DBA. Oracle, PostgreSQL, MariaDB -- прокачанных DBA мало, и стоят они дорого. С другой стороны, рынок, где требуются DBA -- довольно узок. И чтобы не было проблем с поиском работы -- квалификация должна быть высокой.

    Есть ещё NetOps, т. е. сетевые инженеры. Но там сейчас грустно -- несмотря на то, что для работ в операторских сетях, например, нужна нефиговая такая квалификация и знание особенностей кучи вендорского железа (редко кто строит гомогенные в смысла вендора сетевого железа сети, в основном сборная солянка - -Cisco/Juniper/Mikrotik/Dlink/Huawei), но зарплаты там (по Москве) -- 90-100 тысяч. При этом практикуются ночные/выходные дежурства и всё такое. Можно найти прекрасные места, где сетевой инженер будет зарабатывать бОльшую сумму, но в целом -- как-то так.

    Если резюмировать -- в IT Ops ниже порог вхождения в целом. Т. е. можно найти работу, где не требуется серьёзная квалификация, но и денег будет соответственно.

    DevOps -- порог вхождения выше, т. к. DevOps подразумевает выполнение вполне конкретного набора задач, и для их выполнения уже вряд ли возьмут человека с улицы, надеясь, что он "по ходу разберётся" (а вот в IT Ops или даже NetOps в мелких и средних конторах ещё может прокатывать). Квалификация требуется выше, но и денег больше.

    DBA -- всё ещё сложнее, чем с DevOps. Рынок узкий, квалификация нужна высокая, но зарплаты тоже высоки, повыше DevOps, по моим наблюдениям.

    В чистый NetOps сейчас уходить... Ну такоэ... Есть крупные конторы, где этим можно нормально зарабатывать, но всё равно, квалификация требуется высокая, а денег относительно требуемого объёма знаний платят не так уж много. Вот IT Ops + NetOps -- это да, тут можно найти хорошую работу. Но для этого книжек придётся прочитать в полтора раза больше, чем отдельно IT Ops и в два раза больше -- чем отдельно NetOps :-)
    Ответ написан
    4 комментария
  • Входной уровень на Python Junior Developer?

    suguby
    @suguby
    программист, python, django, mysql, git, hg, linux
    Могу посоветовать изучение основ промышленного программирования на Python с наставником. Для работы помимо знания самого языка нужно уметь работать в команде, а это - git/mercurial, трекеры задач, проф средства разработки, тестирование кода, ревью, рефактор и деплой. Знание библиотек конечно же важно, но по опыту могу сказать, что общее понимание приходит быстро, а вот тонкости работы - только в процессе разработки и эксплуатации. Тем более что заранее сказать, что придется изучать - невозможно. Джанго - да, но вдруг поставят задачу, к примеру, интегрировать с рекламной сетью фейсбука - и вперед, изучай библы :)
    В итоге - я собираюсь вести такие курсы. Цель: базовые навыки для пром.разработки на пайтон. Опыт преподавания у меня по интернету есть + прочитал курс пром.программирования в МШП. Собирём группу из 7 человек и запилим какой-нить проект django/mysql/git/redmine :) Пишите, отвечу.
    Ответ написан
    8 комментариев
  • Как разместить Python бота на сервере?

    kgb_zor
    @kgb_zor
    I need your traceback.
    Если не хотите платить то heroku , pythonanywhere.
    Если готовы выложить рублей 100 , то fvds и подобные сервисы.

    Чтоб бот работал на серваке , нужно само собой установить python. Установить при помощи pip все либы , которые вы юзаете , залить файлы при помощи git или ftp и запустить бота. Можете запихать это дело в supervisor , чтоб при падении не запускать вашего бота снова.
    Ответ написан
    Комментировать
  • Требования к Django разработчику(Стек технологий)?

    1) HTML/CSS/JS - очевидно, знать нужно всем.
    2) XML/JSON - уже зависит от типа сервиса,с которыми нужно пилить интеграции
    3) Django/Django REST Framework - тут подразумевается, что либо бек отдает статику, либо бек дает апи для js-фреймворков
    4) Celery/RabbitMQ - т.е. умение делать задачи в очередь. Встречается очень часто, особенно на проектах, где надо какие-то отчеты формировать, письма отсылать и так далее.
    5) Elasticsearch/PostgreSQL - на маленьких проектах поиск делают прямо через постгрес, на больших уже юзают эластик.
    6) Общее знакомство с библиотекой Python
    7) Deploy: nginx / uwsgi (Gunicorn) / postgres - но зависит от проекта, на больших - это не твоя боль.
    ___

    Дополнительно спрашивают: Flask (Сейчас мода идет на микросервисы)/Tornado/Twisted/Aiohtp - это уже зависит от конкретных вакансий.

    Дополнительно требуется: 1-2 года опыта на php/ruby/node.js/java/.net - к сожалению, Python - это не php, тут не пилят говно на коленке за день, тут делают какие-то большие проекты с датой, интеграциями и прочее. Поэтому изначально предъявляют к кандидатам более высокие требования. В том числе опыт работы на Питоне, либо на похожем стеке.
    Ответ написан
    6 комментариев
  • Куда уходят наработки и код от неудачных стартапов?

    sim3x
    @sim3x
    /dev/null
    Ответ написан
    Комментировать
  • Как вводить строку в пoле для ввода какой-то программы из программы Python?

    DarkMode
    @DarkMode
    Made out of meat.
    PyAutoGUI
    Ответ написан
    Комментировать
  • Кто знает хорошие курсы по Docker(удаленные)?

    al_gon
    @al_gon
    Управление вычислениями более чем.
    Есть свои проблемы с формулировкой вопросов к заданиям, но а так всё ок.
    Ответ написан
    Комментировать
  • Стоит ли использовать Docker на продакшене?

    kumaxim
    @kumaxim
    Web-программист
    Если у Вас один-три сервера, скорей всего, Docker Вам не нужен. В этом случае для управления конфигурацией лучше используйте ansible.

    Потребность в Docker возникает либо в случае когда нужно расшарать одно окружение на множество машин, например, у меня и моих коллег сейчас девелоперское окружение(php + apache + mysql + redis) крутиться на контейнерах. Второй пример - нужно настроить динамическое горизонтальное масштабирование. Этот вариант Вам нужно рассматривать, только если Вы используйте AWS или что-то подобное.

    В целом, docker / ansible / chef / puppet и т.п. Вам нужны только в случае, если нужно шарить одно окружение на разные машины, причем часто, с уверенностью что оно везде одно. Другого примера использования придумать не могу.
    Ответ написан
    1 комментарий
  • AsyncIO + Aiohttp или Flask + Celery?

    Lucian
    @Lucian
    https://t.me/BusinessAndFreelance
    Подозреваю что уже не актуально, но может кому пригодится.
    Если не умеете писать асинхронный код и нет желания разбираться тогда выбирайте Celery и Flask. У Celery инфраструктура более развита, также есть просмотр задач через flower, но если вы хотите написать свой велосипед и выучить асинхронное программирование с async/await, то выбирайте вариант с Asyncio + Aiohttp.
    Ответ написан
    Комментировать