• Какими профессиональными навыками должен обладать Linux-сисадмин-фрилансер?

    @algebris
    Javascript Full Stack Developer, UNIX expert
    Если позволите, расскажу немного про свой опыт.
    20 лет назад засел чисто из любопытства за новые операционки QNX, Linux (тогда был по-моему RedHat 2.0), что как воздух были по-сравнению с OS/2 - идея прогрессивная, но реализация крайне неудобная.
    Таким образом сильно увлекся и начал изучать тело новой ОС. Железо было тогда слабое, приходилось пересобирать ядра постоянно для оптимизации производительности, а если что-то не работало, то лезть в исходный код править. Таким образом пришло ощущение как устроена ОС внутри, что такое системные библиотеки, как и какие подключать модули (драйвера) железа и т.п.
    Я решил отказаться от Win95 и старался работать только под Linux. Таким образом мне постоянно приходилось работать в консоли, WM, настраивать под себя рабочую среду:
    - различные Shell (bash, csh, zsh, sh) и их конфиги, скриптинг;
    - конфигурация, компоновка и сборка различных пакетов (тогда репо не очень были развиты, а бинарники и исходники ОС качали и писали на CDROM или ставили по локалке). Самый хороший опыт дало сборка вручную LAMP, то-есть сборка и настройка PHP, MySQL, Apache и различные примочки для него mod_perl, mod_php, mysqli/native и различные варианты под конкретную задачу. Сборка, настройка Sendmail через M4-процессор и куча ньюансов которые приходилось по крупицам собирать на форумах, IRC, BBS;
    - для эффективной работы в linux надо владеть по-крайней мере каким-то скриптовым языком bash, sh, perl, python. На мой взгляд perl и sh подходит лучше всего. Владеть массой инструментов для удобной работы sed, awk, find, tail, grep, ssh и тд. Знать regexp - обязательно. VIM imho лучший текстовый редактор для linux.
    - владеть знаниями и умением работать с сетями. OSI-модель, различные семейства протоколов от низкоуровневых (Ethernet, ISDN, DSL, FDDI) и до высших слоев (HTTP, DHCP, DNS), чтобы при возникновении какой-то проблемы понимать а где вообще затык? Например, попробуйте открыть telnet mail.server.com 25 на почтовик и отправить письмо себе на почту вручную.
    Сюда же можно отнести настройку firewal - iptables, ipfw и тд. Работу с цепочками правил - сохранять, восстанавливать, создавать, получать статистику. Туннели, VPN.
    - Современные реалии, когда куча очень развитых репо и установка/настройка зачастую ограничивается поиском и инсталляцией нужного пакета, нужно владеть интеграционными представлениями и шаблонными настройками различных сервисов. Например для web-стека это: nginx, HA-proxy, php-fpm, mysql, python, postgrees, node.js/npm и тд
    Не маловажно понимать/уметь настраивать кластерные и высоконагруженные решения на основе vmWare, OpenVZ, прочитайте про виртуализацию.
    Вообще работа с linux - это постоянный сбор каких-то статистических параметров - логов, мониторинг и способность поиска на основе этих данных, но тут важен опыт и знания, которые приобретаются со временем.
    50% информации есть уже в инете: stackexchange.com, stackoverflow.com и т.п.
    50% личный опыт и стиль нарабатываемый со временем и не бойтесь экспериментировать и расширять кругозор.
    Сорри, 10 лет как ушел в разработку, может чего-то забыл упомянуть.
    Ответ написан
    Комментировать
  • Какими профессиональными навыками должен обладать Linux-сисадмин-фрилансер?

    Jump
    @Jump Куратор тега Системное администрирование
    Системный администратор со стажем.
    1)Чисто профессиональные навыки.
    Какие именно - вопрос интересный, в принципе можно зарабатывать с любыми.
    Неплохо бы иметь те навыки которые будут нужны вашим потенциальным клиентам.
    Но тут вопрос - а кто собственно будут ваши потенциальные клиенты? Сервера под хайлоад админить будете, маршрутизацию и шейпинг в мелких конторах настраивать, сервера какого нибудь хитрого стартапа настраивать по хитрому будете?
    Т.е надо либо выяснить свои навыки и искать клиентов под них, либо найти клиентов с которыми вы хотели бы работать, узнать какие навыки им нужны, и прокачать их.
    2)Умение продавать.
    Фриланс это самостоятельная работа, нужно самому искать заказчиков, убеждать их что вы лучший исполнитель, минимизировать риски, назначать адекватную цену.
    На этом спотыкается куча хороших профессионалов, которые приходят во фриланс, и недоумевают - почему какие то ушлые ребятки, которых даже с натяжкой профессионалами не назвать, забирают кучу заказов, и имеют кучу денег, а они крутые профессионалы вынуждены перебиваться мелкими, и незначительными заказами.
    Ответ написан
    Комментировать
  • Как изучать сети?

    @throughtheether
    human after all
    Можете подсказать, как вообще эффективнее всего изучить сети?

    Уже отвечал на подобный вопрос. Но могу кое-что дополнить.

    Арендуйте VPS за долларов 5-10, или бесплатно (amazon). Установите на нем любой TCP-сервис, веб-сервер, например, или echo. Подсоединитесь к сервису при помощи netcat. Попробуйте взаимодействовать с свервисом (слать символы через nc). Запишите трафик взаимодействия на сервере и на клиенте, изучите различия, а они будут, в случае использования NAT. Изучите вывод traceroute 'ip-адрес вашего сервера'. Каждому хопу соотнесите номер AS. Для каждой AS проверьте маршруты до вашего сервера и до вашего домашнего провайдера через looking glass. Постройте граф связей AS (bgp.he.net в помощь).

    В процессе у вас возникнет множество специфичных вопросов, которые дадут вам направление для дальнейших исследований.
    Ответ написан
    Комментировать
  • Что такое размерность подсети IP (для чайников)?

    @Psq
    Информационная безопасность. Пентест.
    /10 - сокращенное написание маски.
    Длина маски может быть от 0 до 32 бит.
    Чем больше длина маски - тем меньше конечных узлов входит в состав сети.
    Соответственно, паникуют все из-за того, что РКН блокирует очень большие сети без разбору (/10 - 4194304 Хостов).

    Подробнее про маски - https://ru.wikipedia.org/wiki/%D0%9C%D0%B0%D1%81%D...
    Ответ написан
    Комментировать
  • Почему нужно отделять два в подсчете количества устройств подсети?

    @Tabletko
    никого не трогаю, починяю примус
    Потому что адресов в маске /24 всего 256 ip адресов. Из них 2 "служебных". В вашем примере, адрес 192.168.1.0 является адресом сети, а 192.168.1.255 - адресом широковещательной рассылки, а 254 адреса остаются доступными для узлов сети.
    Ответ написан
    Комментировать
  • Как откатить коммиты в git?

    sergey-kuznetsov
    @sergey-kuznetsov Куратор тега Git
    Автоматизатор
    Откатиться на три коммита назад:
    git reset --hard HEAD~3

    А вообще не стоит вслепую повторять команды. Лучше прочитать документацию и работать осмысленно.
    Ответ написан
    5 комментариев
  • В чем суть декораторов?

    trapwalker
    @trapwalker Куратор тега Python
    Программист, энтузиаст
    В питоне функции и классы - это тоже объекты. У них есть особый синтаксис объявления, после объявления эти объекты доступны по имени как и любой другой объект с именем (переменная).

    Лирическое отступление. В питоне переменные работают не так же как в Си. В Си переменная - это ящичек, а значение в нём как бы лежит. В питоне объект - это как чайный пакетик, а имя как ярлычок на ниточке. Можно к одному пакетику несколько ярлычков привязать, то есть несколько имён. В Си это достигается указателями. В питоне, получается, всё "как бы указатели" и разыменовываются они неявно, под капотом. Но сейчас не о том...

    Есть такой паттерн проектирования - декоратор. Декоратор - это функция, которой в аргументе передаётся какой-то объект, а на выходе она возвращает другой объект, каким-то образом задекорированный. В реальной жизни декорация объекта - это, скажем, раскрасить ассенизаторную машину под божью коровку или сделать заточку из ложки (есть, по-прежнему, можно, но можно и пырнуть)... Также декоратор может и вовсе подменять объект полностью, к примеру, нам даётся пластилиновая фигурка, а декоратор - это процесс заливки её её гипсом и производство формы под литьё. Пластилин из готовой формы выковыряли и выкинули, а декоратор - это процесс (функция) производства формы из пластилиновой фигурки.

    Повторюсь, в общем случае декоратор - это функция, которая либо немного меняет какой-то объект, либо делает на его основе или по его мотивам какой-то новый. Новый при этом может как содержать старый внутри, так и не содержать. Декоратор может и вовсе не трогать сам объект, а возвращать его без изменения, зато регистрировать его в каком-то внешнем списке создавая так называемый сайд-эффект. Примеров можно придумать уйму.

    Итак:
    my_object_instance = MyClass()
    my_object_instance = my_decorator1(my_object_instance)
    my_object_instance2 = my_decorator2(my_object_instance)

    В этом примере дважды задекорирован объект. Здесь при первом декорировании оригинал нам, судя по коду, не нужен (или декоратор его не менял, смотря что за декоратор, может просто зарегал где-то в списке...), а при втором декорировании нам остаётся доступным и оригинал и задекорированная версия.

    Пока всё просто и не ясно причем тут собаки и чем эти декораторы отличаются от обычных функций. На второй вопрос ответ прост -- ничем особенным. Просто мы такой смысл вкладываем в эти функции. Такая абстрактная концепция.

    В Питоне есть синтаксический сахар, чтобы декорировать объявления функций и классов.

    Иногда хочется наглядно модифицировать или зарегистрировать в каком-то глобальном реестре класс или функцию, но объявление при этом сильно менять не хочется.
    Можно так:
    my_pretty_functions = {}
    
    def my_deco(decorated_function):
        '''Это декоратор, который не меняет декорируемый объект, 
        лишь регистрирует его в словаре'''
        my_pretty_functions[decorated_function.__name__] = decorated_function
        return decorated_function
    
    def my_function(x):
        return x ** 2
    
    # вот декорирование вручную, без сахара
    my_function = my_deco(my_function)
    
    # Но в питоне же есть сахар для этого, и вот альтернативный вариант декорирования:
    @my_deco
    def my_other_function(x):
        return x ** 3

    Эти два способа декорирования работают одинаково, просто "собака" - это синтаксический сахар.

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

    Но замыкания - это отдельная большая история, а узнать об этом вы сможете, к примеру, на занятиях по питону на otus.ru, где я скоро, надеюсь, стану преподавать=).

    Спрашивайте сто не понятно. Я тут не рассмотрел даже малой доли от разных способов применения декораторов в народном хозяйстве. Надо будет состряпать специальный курс про это.
    Ответ написан
    Комментировать
  • Как вообще понимать декораторы в Python?

    @o5a
    Дальше у меня возник вопрос и ступор - мы почему то возвращаем не результат выполнения функции wrapper, а возвращаем саму функцию-объект.

    Так и есть. Нам же не нужно в самом декораторе вызывать функцию, а только указать, какую функцию мы используем. Без скобок () это просто ссылка на сам объект (функцию).
    Пример:
    def f1(): return 1
    
    a = f1() # присваиваем результат работы функции, т.е. в a будет 1
    a = f1 # присваиваем саму функцию
    # тогда a - это не результат работы функции f1, а сама функция f1
    # и мы можем ее запустить
    print(a() ) # выведет 1, т.к. мы через a запустили f1

    Декораторы так и делают. Создают функцию и возвращают ее, но не запускают. А запускается эта "обертка" во время запуска нашей основной функции.
    Т.е. когда добавляется декоратор
    @uppercase
    def greet(): ...
    # то когда мы запускаем функцию
    greet()
    # по факту запускается
    uppercase(greet)()

    Но что возвращает uppercase(greet) ? Смотрим по коду. А возвращает она некий wrapper. Что делает wrapper?
    original_result = func() # запускает переданную ему функцию на исполнение, в нашем случае greet
    return f'Большие {original_result.upper()}' # и возвращает строку с результатами исполнения

    И она сама каким-то образом вызывается и выполняется, хоть мы и явно не пишем это.

    Исполняется потому, что запуск декорированной функции означает запуск
    uppercase(greet)()
    а т.к. uppercase(greet) возвращает wrapper
    то uppercase(greet)() запускает wrapper()
    Ответ написан
    Комментировать
  • Что означает "@" в python?

    iggor-markin
    @iggor-markin
    Python Developer
    Ответ написан
    Комментировать
  • Цель— как стать Разработчиком Python Junior?

    tema_sun
    @tema_sun
    Миллион раз уже говорили - единственный язык, который должен знать любой программист - это английский. Если вы не знаете английского вы не можете работать с документацией и искать ответы на свои вопросы. Т.е. вас никогда не возьмут на работу, т.к. вы не сможете самостояетльно решать задачи.
    Ответ написан
    Комментировать
  • Как устроиться django-developer без опыта коммерческой разработки?

    Jacen11
    @Jacen11
    очень хреновое резюме. Причем многие выражения в любом случае нельзя использовать. Много мало того что ненужной воды, так еще и выставляет тебя в худшем свете!

    КАК ПРИШЁЛ К DJANGO
    да всем насрать как. Могут иногда на самом собесе спросить чтобы начать разговор

    Из стоящих работ к сожалению могу предоставить код своей незавершённой социальной сети.
    тут и сожаление, и незаконченный проект. Заранее показываешь что ты дно, да еще и согласен с этим. Не незавершенный проект, а продолжающий развиваться. А еще лучше не говорить об этом. Кто посмотрит поймет что не закончил, кто не посмотрит не решит что ты рукожоп

    Данный проект я начал создавать, чтобы проверить на что я способен это всё же интереснее, чем просто создавать сайты-блоги, визитки и тд. Я не завершил его по причине острой необходимости в подработке( начал писать на php об этом говорится в разделе СОПУТСТВУЮЩИЕ НАВЫКИ).
    очень интересно. На самом деле нет. Прям автобиографию написал. У hr сотни резюме, эта писанина им не нужна и не интересна. Они ищут человека с определенными навыками, не более.

    В проекте "социальная сеть" начал применять паттерн MVC, но не везде отрефакторил код.
    Твой проект скорее всего никто не посмотрит, а если посмотрит увидит МВС, но ты сразу признался что работаешь через жопу

    То что ты там дальше понаписал записывается так
    git, web-socket, django-channels, docker + redis.

    Postman
    впервые вижу это как некий плюс. Все в курсе что это и умеют пользоваться, если нет, то пяти минут хватит разобраться

    на данный момент из-за проблем с подключением удалил его как вторую ОС при необходимости я оперативно верну linux назад
    опять автобиография пошла, не связанная с вакансией. Может книги лучше будешь писать?

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

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

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

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

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

    Я быстро разбираюсь во всём новом
    это уже давно стало позорным клише в резюме

    Вообще можно объяснить почему неправильно буквально каждое предложение, но я уже устал.

    Вывод
    Это беспонтовое резюме от школьника, который не то что питон, русский знает на 3. Такое сразу идет на помойку. Любой выпускник универа или свитчер инженер сходу будет предпочтительнее. Посмотри как другие люди составляют резюме и сделай так же
    Ответ написан
    Комментировать
  • Frontend jun в 26?

    fedorez
    @fedorez
    Хатуль мадан
    Господи...
    Жду рефлексию о возрасте от 20—летних...

    По теме - нет, 26 - это мало. Это не «уже» а «ещё»
    Не комплексуй.
    И это... в профессии хватает придурков, которые любят посамоутверждаться за чужой счёт
    Отращивай защитную раковину, иначе будет тяжело. Позволить одному-двум таким сломать тебе жизнь - глупо.
    Делай что считаешь нужным
    Ответ написан
    Комментировать
  • Где учится созданию ботов на python?

    InternetMaster
    @InternetMaster
    Интернет
    Определись с библиотекой, в основном их 2:
    PyTelegramBotAPi
    AioGram

    Попробуй с начала с PyTelegramBotAPI.
    импортируй telebot в python.

    Ознакомься с оф. документацией Telegram
    Ответ написан
    Комментировать
  • Где учится созданию ботов на python?

    Vindicar
    @Vindicar
    RTFM!
    Чтобы писать ботов, в большинстве случаев достаточно знать
    1. основы языка
    2. как ставить пакеты через pip
    Также необязательно, но весьма вероятно:
    3. что такое асинхронные программы и как они работают (для ботов, которые выполняют длительные операции)
    4. основы работы с БД (для ботов, которым требуется персистентное хранилище)
    5. что такое конечный автомат и как он работает (для ботов, которые реализуют сценарий из нескоьких шагов)

    А дальше ищешь библиотеки под нужный тебе месенджер, ищешь их документацию, смотришь Quickstart, выбираешь ту, которая выглядит удобнее. Затем постепенно наращиваешь функциональность от своего quickstart-примера - определяешь нужные события/действия, ищешь как на них подписаться или какие методы им соответствуют.
    Ответ написан
    Комментировать
  • Где учится созданию ботов на python?

    Zoominger
    @Zoominger Куратор тега Python
    System Integrator
    Нигде. Читаете книжку по Пистону, читаете модуль для Telegram. Пишете.
    Ответ написан
    Комментировать
  • С чего начать изучение Golang?

    @wmns
    golang-book.ru уже написали.
    https://tour.golang.org/welcome/1 Официальный тур
    Ну и канал отличного преподователя:
    https://www.youtube.com/user/toddmcleod/featured
    Ответ написан
    Комментировать
  • Стоит ли изучать Vue 2?

    @kandrash
    Кратко о себе
    Если вы _хорошо_ знаете VUE2 - переход на 3 у вас полчаса займёт.

    Просто в реальных проектах 3 очень медленно внедряется. Ок, год назад она вышла. И что по факту? Vuetify - альфа.10 Учитывая как они относятся к срокам - в лучшем случае в 2022 релиз увидим. Nuxt - та же ситуация. Выкатили пакет для поддержки VUE 3, но полноценного Nuxt 3 даже в планах нет.

    Так что учите 2, точно ничего не потеряете.
    Ответ написан
    Комментировать
  • Какие почитать учебники по алгоритмам?

    JSinga
    @JSinga
    Отличная книга по алгоритмам это Кормен `алгоритмы построение и анализ`.
    Лучшего не найти и не надо. На хабре была соответствующая статья
    Книга можно сказать основа:-)

    Кнут это конечно перебор:-) тем более у него не 3 тома, а 4 и делится на а, б и тд.
    Ответ написан
    1 комментарий
  • Какие курсы по frontend'y посоветуете?

    @ValerieIs
    У EPAM есть энтузиасты который проводят заочные курсы. Называются Rolling Scopes School. Еще у них есть очные, после которых они на работу принимают. Есть в Петербурге и где-то еще, посмотрите у них на сайте. И они бесплатные, потому что им выгодно с них брать на работу.
    Еще неплохой курс от Ивана Петриченко на Udemy, он платный
    Ответ написан
    Комментировать