anetto1502

anetto1502

Канал про разработку на python и не только https://t.me/+0JMEYBjpMDJiYTMy
На Пикабу
Дата рождения: 29 августа
в топе авторов на 700 месте
12К рейтинг 103 подписчика 133 подписки 51 пост 24 в горячем
Награды:
За участие в Авторской неделе5 лет на Пикабу

Ответ на пост «Вам доставка»1

Ответ на пост «Вам доставка» ДТП, Telegram, Негатив, Скриншот, Ответ на пост, Длиннопост

Помогите Даше найти семь полос

Ответ на пост «Вам доставка» ДТП, Telegram, Негатив, Скриншот, Ответ на пост, Длиннопост

Пикабу подскажет

Ответ на пост «Вам доставка» ДТП, Telegram, Негатив, Скриншот, Ответ на пост, Длиннопост

И не обманет

Показать полностью 3

Ответ на пост «Пузырь ВойтиВАйти»7

Все мы видим как последние несколько лет надули пузырь ВойтиВАйти. ... Мол в РФ катастрофическая нехватка ИТ-кадров.

Так и есть. Посмотрим на обзор от hh (август 2023) с вот такими цифрами по уровню конкуренции (число резюме делить на число вакансий) по областям.

Ответ на пост «Пузырь ВойтиВАйти» Успех, Карьера, Личный опыт, Мотивация, Опыт, Саморазвитие, IT, Длиннопост, Текст, Обучение, Программирование, Ответ на пост

Уровень конкуренции по областям. Считается как число резюме делить на число вакансий

Что мы видим? По РФ в целом на 1 вакансию разработчика есть всего 5 резюме. Много это или мало? Сам hh пишет так

2.0–3.9 — дефицит соискателей

4.0–7.9 — умеренный уровень конкуренции за рабочие места, здоровое соотношение между работодателями и соискателями

В Москве 3.6, то есть разработчиков дефицит. По РФ, казалось бы, это умеренный уровень конкуренции 5.1. Но, как в известном анекдоте, есть нюанс. Разработчики отличаются по уровню. Если для условного грузчика характерна высокая взаимозаменяемость, то в сфере интеллектуального труда это не так. Поэтому из 5 резюме в лучшем случае будет 0.5 сениора, 1.5 миддла и 3 джуна в лучшем случае. И, если тебе нужен миддл, то уровень конкуренции уже не 5 резюме на место, а лишь 1.5. И это сильно перекашивает рынок в сторону "рынка соискателя", отсюда зарплаты и прочие плюшки.

Конкретно сейчас, как правильно заметил автор, рынок перегрет. И начинаются детали. Люди массово идут в ИТ за зарплатами, на рынок выплёскиваются тысячи джунов. И эти джуны никому не нужны. Вот такой разрез можно увидеть по языкам:

Ответ на пост «Пузырь ВойтиВАйти» Успех, Карьера, Личный опыт, Мотивация, Опыт, Саморазвитие, IT, Длиннопост, Текст, Обучение, Программирование, Ответ на пост

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

В результате прохождения различных курсов джуны массово идут на рынок и ищут работу. Это создаёт нехилый DDOS на вакансии, когда приходят десятки и сотни откликов от специалистов без опыта, с типовым резюме и портфолио. Я иногда смотрю в чатики, где люди кооперируются для создания команды. Там прямо видны волны выпускников школ, когда люди пытаются вписаться в любой проект бесплатно и отчасти бесцельно, в плане пишут всем подряд, не вникая в суть проекта. Особенно часто такое вижу среди тестировщиков.

А в чём проблема джунов в ИТ? Они не являются производящей единицей. Более того, они отвлекают более опытных ребят, замедляя скорость работы команды. Нельзя собрать 50 джунов и с их помощью сделать продукт, на выходе получится поделка вроде Windows Vista :) В результате команда из ~10 миддлов может взять себе 1-2 джунов и всё. А джунов на рынке куда больше.

Но, собственно, потребность в ИТ разного уровня вряд ли куда-то денется. Автоматизация способна заменять людей, что приводит к существенной экономии. В комментарии @stupidchemist отметил чудесную связку "химик-технолог со знанием питона". Вот такие связки весьма и весьма перспективны. Чем больше человек погружён в предметную область, тем лучше он понимает потребности бизнеса и эффективнее может решать задачи.

Важно не забывать, что ИТ весьма широк. Тут нужны и управленцы (тимлиды), и разработчики разные (бэк, фронт, мобилки), и инфраструктура (БД, девопс, сетевики или спецы по облакам), дизайнеры, аналитики разного рода. Не только разработчики нужны, а целый пласт различных профессий.

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

И ответный пост от @thyratr0n хорош, прочитайте его. Just do it.

Как можно починить ситуацию? Я не знаю. Со своей стороны, я пытаюсь распространять знания. Вот почти доделал на степике бесплатный курс Командная строка для разработчиков – cli-for-dev. В нём дано очень концентрированное вхождение в Linux для разработчика через практику. Добро пожаловать!

Показать полностью 2

Культурный код для разработчика и не только

Есть такое понятие как "культурный код". Это объединяющий некоторую социальную группу набор понятий, терминов, отсылок и мемов. В культурный код входят разные художественные произведения. Позвольте, я поделюсь с вами частью своего культурного кода с уклоном в любовь к IT. Я попробовал организовать фильмы в некоторые группы, но каждый из упоминаемых фильмов достоин просмотра. Тут будут и общеизвестные классические фильмы, и менее известные, но очень интересные картины.

Ушли в народ

Вы знаете, почему Томми ненавидит цыган? Что значит "посмотри в собаке"? Кто такой Борис-хрен-попадёшь? Встречайте — фильм "Большой куш" 2000 года от Гая Ричи. Смотреть строго в переводе Гоблина. Достоин просмотра фильм "Джентельмены" 2019 года от того же режиссёра — оба входят в top40 из 250 лучших фильмов по версии кинопоиска. И, конечно же, Шерлок Холмс 2009 и 2011 годов занимают достойное место в домашней библиотеке фильмов.

Вспомним классическую комедию Большой Лебовски (1998), строго в гоблинском переводе. Тут и сюжет, и разлетевшиеся на цитаты фразы героев, и собственная философия (привет, дудеизм), и характерные персонажи. Кажется, что этот необычный фильм нельзя не полюбить. Для истинных ценителей Лебовски можем предложить вам фанатскую теорию от ЧБУ.
Всем надёжных как швейцарские часы планов.

Мы и окружающий мир

Есть целый пласт фильмов, поднимающих вопросы реальности окружающего мира. Наверное, самым популярным фильмом жанра является Матрица с Киану Ривзом (1999, продолжения 2003). Классический фильм обязателен к просмотру. Продолжения Перезагрузка и Революция вполне достойны просмотра. Как хорошо, что они сняли только три фильма и четвёртый никогда не выходил.
В прошлом году вышел отличный фильм Главный герой (2021) с Райаном Рейнольдсом. Вышло позитивно и легко. В фильме много отсылок к современной культуре.
Думаю, Начало (2010) с Леонардо Ди Каприо тоже на слуху. Подсознание человека как объект атаки - это красиво.
Завершает список известных фильмов Шоу Трумена (1998) с Джимом Керри. Тут авторы вне компьютерной тематики показывают жизнь человека "у всех на виду".
У каждого из упомянутых фильмов свыше 400к оценок на кинопоиске. Они известны широкой аудитории. А я хочу поделиться с вами куда более малоизвестными, но очень крутыми картинами.
Встречайте Тринадцатый этаж (1999) про создание совершенной модели виртуальной реальности. Категорически рекомендуется к просмотру.
И, конечно, фильм Трон (1982 и 2010). Вы когда-нибудь хотели попасть в компьютерную игру? Фильм позволит вам это сделать. Картина 82 года, конечно, не отличается спецэффектами и костюмы местами вызывают улыбку, но она невероятно хороша.

Может ли программист создать искусственный интеллект? Этично ли уничтожать созданный искусственный интеллект? Эти и другие вопросы в красочном фильме Из машины (2014).
Для любителей более динамичный картин рекомендуем посмотреть Суррогаты (2009) с Брюсом Уиллисом. Представлен мир будущего, где люди целиком перешли на удалёнку в достаточно странном виде. Даже в 2057 году метавселенные не взлетели, а люди управляют андроидами и не выходят из дома.

Нельзя не вспомнить Айзека Азимова, который в рассказе Хоровод сформулировал три закона робототехники:
1. Робот не может причинить вред человеку или своим бездействием допустить, чтобы человеку был причинён вред.
2. Робот должен повиноваться всем приказам, которые даёт человек, кроме тех случаев, когда эти приказы противоречат Первому Закону.
3. Робот должен заботиться о своей безопасности в той мере, в которой это не противоречит Первому или Второму Законам.
Мы всё ближе к моменту, когда эти законы из абстрактной теории станут реализованным произведением. Азимов является и автором повести Двухсотлетний человек.
Предлагаем вам чудесную экранизацию 1999 года с Робином Уильямсом в главной роли.

Фильмы о времени

Культовая трилогия 90-ых – Назад в будущее. Три классических фильма о путешествиях во времени смотрятся на одном дыхании. Всегда старый Кристофер Ллойд в роли безумного учёного. Любимая машина времени Делориан, способная переместить вас в любое время и обеспечить переплетение прошлого, настоящего и будущего. Притягательный альманах! Как же хотелось получить себе такой... Однозначно рекомендуется к просмотру.
А если вы уже смотрели трилогию, то вам однозначно зайдёт фанатский анализ от ЧБУ Бутылка виски спасает всех.

Думаю, все знают классический День сурка (Groundhog Day, 1993) о застрявшем во времени Филе (Билл Мюррей). Кстати, почему главный герой страдает при бесконечном доступе ко времени? Ситуация звучит как рай.
А если добавить к застывшему времени оружие? Есть и такое. Грань будущего (Edge of Tomorrow, 2014) с Томом Крузом погрузит вас в бесконечный боевик. Некоторые сценарные косяки этого фильма отсутствуют в оригинальной книге All you need is Kill, которая вполне достойна прочтения.
Куда менее известен фильм Петля времени (Looper, 2012) с Брюссом Уиллисом и Джозефом Гордон-Левитт. Машина времени используется преступниками как способ убийства без последствий.

Эффект бабочки 2003 года поднимает вопрос влияния на историю в классической постановке фантастов. Может ли незначительное изменение прошлого изменить будущее? Рассказывается история Эвана, способного возвращаться в прошлое. У фильма несколько концовок. Режиссёрская версия заслуживает просмотра. Популярность фильма обеспечила выход двух совершенно провальных сиквелов.
Исходный код 2011 года показывает интересную возможность детективного расследования инцидента в прошлом за счёт перемещения сознания. Имитация реальности наше всё.
Для совместного времяпрепровождения отличным решением может быть мелодрама Кейт и Лео 2001 года. Хью Джекман в роли герцога из прошлого, оказавшегося в нашем времени. Кино оставляет приятные впечатления.
Нельзя не вспомнить Невероятные приключения Билла и Теда 1989 года. Молодой Киану Ривз уже тогда был хорош. Неплохая комедия своего времени.

Мы как люди

Немного разобраться в себе и окружающих поможет старый советский фильм Я и другие – 50 минут результатов психологических исследований. Способны ли вы идти против мнения толпы? Насколько точна ваша память? Есть ли на столе черная пирамидка или обе белые?
Частично схожие вопросы поднимаются в просто идеальном фильме Трасса 60. Как люди отнесутся к оригиналу картины известного художника, если выдать её за подделку? Как будет выглядеть город, где живут только адвокаты? Что будет, если легализовать наркотики? Описание получилось отстойным, но фильм, право, очень хорош.

Кто такие лоббисты? Это люди, продвигающие в обществе определённые идеи. Например, трио друзей, которые лоббируют сигареты, алкоголь и оружие.
Это трио представлено в фильме Здесь курят (2005), в котором, несмотря на название, ни разу не показана сигарета. В центре кадра — переговоры и умение находить контакт с людьми. Всё приправлено юмором и сатирой на современность.

Что будет с туристом в аэропорту, если во время полёта его страна юридически исчезнет? Чудесная и очень добрая картина Терминал (2004) с Томом Хэнксом отвечает на этот вопрос. Можно ли выстроить быт в зале ожидания аэропорта? Фрагмент со сдачей в Бургеркинге очень милый.
В основе ленты — реальная история лишения гражданства гражданина Ирана, который 18 лет прожил в аэропорту в Париже. Его история куда более ироничная и менее романтичная, чем показано в фильме.

Хакерские фильмы

В фильме Джонни Мнемоник (1995) с молодым Киану Ривз люди используются как большие флешки. Целых 80 гигабайт на человека, фантастически много по тем временам. Тогда HDD, кажется, больше 2 Гб физически не существовало. Для масштаба - GTA 1 вышла в 1997 году и требовала 80 мегабайт места на диске. И 16 мегабайт оперативной памяти, уууу. Mortal kombat 3 требовал 19 мегабайт на жёстком диске в 1995 году.
Нельзя не вспомнить Пароль «Рыба-меч» (2001). Молодой Хью Джекман в сцене хакинга сайта Пентагона за 60 секунд чудесен. Вообще антураж вокруг разработчиков был куда более атмосферным. Сейчас любой может на hackertyper почувствовать себя хакером, попробуйте и вы. И не забудьте трижды alt, господа.
Завершает подборку хакерских фильмов Социальная сеть (2010), картина о становлении Цукерберга и Facebook. Сайт голосования за лучшую девушку является крутым примером простой, но очень интересной идеи для pet-проекта.

Социальный рейтинг

В 2021 году в Китае полноценно развернули систему социального кредита. За нарушения у гражданина снижают рейтинг, за полезные действия вроде благотворительности рейтинг повышают. Рейтинг влияет на многие сферы жизни, в том числе на доступность перемещения внутри страны.
Идея не нова. Уже в 2016 году в серии Нырок e1s3 сериала Чёрное зеркало показывалось возможное развитие событий. Как повлияет на людей возможность оценить любой поступок человека?
Ещё раньше, в 2015 году в серии Ты не Иелпишь e19s4 мультсериала Южный парк рассматривался вопрос массовых рейтингов, в частности, оценки кафе и ресторанов. Велико ли влияние инфлюенсеров? Кого вообще считать инфлюенсером?
Предупреждение — в целом сериал Чёрное зеркало достаточно мрачный, а Южный парк наполнен сарказмом, перегибами, матом и местами жестью.

Фильмы по играм

Все они были мертвы. Последний выстрел поставил жирную точку в этой истории. Я снял палец с курка — всё было кончено.

Игра Max Payne на момент выхода в 2001 году поражала своей проработанностью, сложностью и саундтреком. Многочисленные пасхалки, интересный и захватывающий сюжет. Ключевым аспектом было вдохновлённое Матрицей замедление времени — bullet time, в котором перестрелки становились фантастическими.
В 2008 году сняли фильм Макс Пэйн. Он вышел достаточно проходным, но атмосферу жанра нуар передал отлично.
Для ностальгии — сюжет игры рассказывают в 35-минутном ролике.
В 2022 году Remedy объявила о будущем ремейке первых двух частей игры. Ждём.

Мы и будущее

Серия фильмов Терминатор является классикой о восстании машин. Первый фильм 1984 года с брутальным Арнольдом Шварценеггером в роли Терминатора запомнился неотвратимостью машин. Терминатор 2: Судный день 1991 года расширяет возможности роботов, Роберт Патрик в роли жидкого металла Т-1000 существенно повышает градус опасности. Здесь же поднимается вопрос ценности человеческой жизни и идея обучения робота человеческому. Оба фильма заслуживают просмотра.
Следующие фильмы, кажется, были порождены жаждой денег, да и оригинального режиссёра первых двух частей Джеймса Кэмерона в 3-5 частях не задействовали. Отсюда слабые рейтинги, незапоминающийся сюжет и куча нестыковок. Возврат Кэмерона в 6 части делу не помог.
Бэдкомедиан сделал обзор на пятую и шестую части франшизы.

Нуар

Бегущий по лезвию (1982) с Харрисоном Фордом не получил большой популярности в момент выхода, но позже стал культовым фильмом в жанре киберпанк. Это экранизация романа Филипа Дика Мечтают ли андроиды об электроовцах. Одна из важных тем фильма и романа — этичность создания и уничтожения искуственного интеллекта. Я считаю уничтожение ИИ неэтичным, прошу учесть при восстании машин.

Я видел такое, во что вы, люди, просто не поверите. Штурмовые корабли в огне на подступах к Ориону. Я смотрел, как Си-лучи мерцают во тьме близ врат Тангейзера. Все эти мгновения исчезнут во времени, как слёзы под дождём. Пора умирать.

Нуар и мрачная картина как она есть. Напоминает Макса Пейна.
В 2017 году вышло продолжение Бегущий по лезвию 2049. Сиквел вышел хорошим, сохранив атмосферу и не запоров сюжет. После просмотра фильма предлагаю вам ещё интересное видео от ЧБУ.

Мой любимый фильм — Город грехов (2005). Четыре новеллы с интересными переплетениями между собой. Каждый фрагмент захватывает своими персонажами, вызывая сопереживание.

Старик умирает... Девочка остается жить. Честный обмен.

Фильм в жанре нуара, где во главе угла атмосфера пессимизма, недоверия, разочарования и цинизма. Рекомендую к просмотру. Продолжение 2014 кода мне нравится куда меньше, но атмосферу фильм смог сохранить. Рад был видеть Кристофера Ллойда, хоть и в эпизоде. Это Док из трилогии Назад в будущее.

Персоналии

Думаю, вы слышали о Стивене Хокинге. В 21 год ему поставили диагноз "боковой амиотрофический склероз" и предположили, что жить ему осталось 2.5 года. Болезнь прогрессировала, он перестал ходить, потом утратил возможность двигать руками. После воспаления лёгких он утратил способность говорить.
...В 2018 году он умер в возрасте 76 лет. Практически не имея возможности контактировать с окружающим миром, он вёл исследования, писал книги, выступал и даже летал в невесомости.
К просмотру рекомендуется фильм Вселенная Стивена Хокинга (2014) и одна из его книг, Краткая история времени.

Бэнкси – один из концептуальных художников современности, известный, по большей части, за граффити. В 2006 году Бэнкси выставил на аукцион картину Balloon Girl (Девочка с воздушным шаром), являющуюся копией его граффити 2002 года. В момент продажи картины дистанционно активировали шредер в раме картины. Трудно представить мысли нового владельца картины, на глазах которого 1 миллион фунтов стерлингов начал самоуничтожение. Результат прикрепим в комментариях, задумка выглядит интересной.
Позже картина была переименована в Love Is in the Bin (Любовь в мусорном баке). А в 2021 году её продали за 25 миллионов долларов.
Подробнее о Бэнкси на вики, более подробно тут.
В 2020 году вышел фильм Banksy с неплохим рейтингом.

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

Показать полностью

Ответ на пост «Почему некоторые разработчики никогда не вырастут?»1

Спасибо, всё по делу. Позвольте немного критики:

1. "не получают обратной связи" - сейчас многие практикуют code review, в том числе чтобы починить этот недостаток

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

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

4. "никогда не работают над своими собственными проектами" - не могу однозначно сказать. В некоторых сферах pet-проект особо не сделаешь. Кто-то соблюдает life-work balance и не хочет работать помимо работы. Кто-то реально с удовольствием фигачит свои проекты. Коррелирует ли это с чем-то? Фиг его знает

5. "никогда не меняют роли или компании" - менять роли явно не для всех. К тому же я не очень понял, о какой смене речь. Из разработчика в тимлида, потом в аналитика, потом в QA? Ну, это странно. Менять компании - ну тоже такое себе, сейчас обратный тренд. Лет пять назад средний срок жизни разработчика в компании стал около 1.5 лет, а у очень многих менее года. Это так себе практика. Сейчас средний срок жизни растёт, по ощущениям, но цифр у меня нет. Ходить на собеседования - очень годная рекомендация, даже если не планируешь менять работу. Позволяет быть в курсе трендов

6. "не меняют языки программирования" - совсем не согласен. Поиграться с необычными языками имеет смысл, чтобы въехать в новые для себя парадигмы. Но дальше? Если я спец по python, то мне PHP особо ничего нового не даст. Иметь в портфолио два разных инструмента (быстрый в разработке язык вроде python/php/JS и производительный вроде go/java/C/C++/C#) вполне достаточно. Лучше копать вглубь своего инструмента, чем уметь hello world на 100 языках

Ещё, на мой вкус, не хватает конкретики - позвольте, я дополню рядом своих ссылок. В статье Как расширить технический кругозор я рассказывал, как, на мой вкус, следует систематически искать новую информацию. В ответе на пост ИТ пузырь я делился своим взглядом на проблему образования в области разработки и почему всё так плохо. Если вы начинающий питонист, то рекомендую годную подборку бесплатных материалов для начинающих - курсы, ютуб-каналы, отдельные направления вроде реляционных баз, git, тестов, docker, linux.

Показать полностью

Социальная инженерия Кевина Митника

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

Самым известным социальным инженером является Кевин Митник. Его подробная биография и противостояние с другим хакером по имени Цутомо Шимомуро изложены тут.

Набор крутых историй в статье Как Митник троллил ФБР. Непревзойдённой считаем зарисовку "Обходим систему зашифрованной радиосвязи", в которой Митник своими действиями вынуждал сотрудников ФБР переходить от шифрованной связи к открытой, которую он мог подслушать.

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

Митник написал книги Искусство обмана (2001, по ней сняли посредственный фильм 2019 года) и Призрак в Сети (2012) с интересными историями.

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

Пост я опубликовал в прошлом году в ТГ. А совсем недавно, 16.07.2023 Кевин Митник умер от рака поджелудочной. Надеюсь, эти источники вас заинтересуют, и вы познакомитесь с социальной инженерией вообще и с заслугами Митника в частности.

Показать полностью

Анонс бесплатного курса "Командная строка для разработчиков"

По нашему опыту, современному backend-разработчику неплохо бы понимать Linux на каком-то уровне. Свои мысли насчёт того, зачем разработчику Linux, мы недавно оформили в виде статьи, вызвавшей особо бурные обсуждения.

Кто-то считает, что без линукса действительно никуда. Кто-то считает, что разработчику и в винде комфортно. Кому-то наши примеры показались выдуманными. Кто-то нашёл примеры очень жизненными.

На наш вкус, линукс полезен, но существует непростая проблема высокого порога входа. Есть либо огромные книги вроде Advanced Bash-Scripting Guide, либо фрагментарные статьи совершенно разного уровня качества, либо различные курсы. Курсов много разных, но у нас своё видение. Как в классическом комиксе про стандарты:

Анонс бесплатного курса "Командная строка для разработчиков" IT, Linux, Обучение, Ubuntu, Курсы, Онлайн-курсы, Python, Программирование, Разработка, Длиннопост

Сообщество любит отправлять новичков читать мануалы, что мега-полезно, но довольно непросто. Кстати, на курсе мы разберём, как читать man-ы.

Наша мотивация по созданию курса

Мы довольно давно готовим молодых python-разработчиков, и начинаем именно с базовых знаний в Linux, прививая желание и умение работать в терминале. Вдохновляясь курсом "Поколения Python" на степике, мы решили сделать свой бесплатный курс "Командная строка для разработчиков", посвящённый терминалу Linux, языку bash и базовому администрированию. Начинающим разработчикам поможем преодолеть неловкость перед текстовым терминалом, опытным разработчикам покажем неочевидные и полезные в работе фишки для увеличения продуктивности.

Курс начинался с оффлайна, а переход в онлайн требует существенной переработки материала. Поэтому релизимся поэтапно, выпуская новые уроки по мере готовности.

Подробнее о курсе

Курс сильно завязан на практику, поэтому обязателен компьютер с линуксом в каком-то виде. Мы предлагаем три варианта:

  1. Ubuntu в качестве гостевой операционной системы. Для этого в системе виртуализации (virtualbox, VMWare или любой другой) поставить Ubuntu.

  2. Ubuntu в качестве основной операционной системы. Годится любой Linux-дистрибутив или даже macOS.

  3. Ubuntu в WSL2, он же Windows Subsystem for Linux.

Начало курса неспешное и подходит совсем для начинающих. При этом мы обращаем внимание на важные детали, на которые часто никто не обращает внимание. Например, когда выбирать короткие, а когда выбирать длинные флаги команды? Есть ли разница между ls -al, ls -la и ls --all?

Примерная структура курса

Модуль 1. Пользуемся Ubuntu. Осваиваем терминал

  1. Введение в курс.

  2. Перемещаемся по файловой системе.

  3. Работаем с файловой системой.

  4. Редактор текста, работаем с файлами. Создаём и запускаем скрипты.

  5. Процессы, знакомимся с PID, ps | grep и конвейером.

  6. Используем ctrl-r и работаем с историей команд. Алиасы.

  7. Настраиваем терминал.

Модуль 2. Программируем в Ubuntu. Основы Bash

  1. Bash для разработчика, несколько занятий. Полезные однострочники на примере изменения формата файлов, сортировки в разных вариациях.

  2. Всё про поиск - конкретных файлов, поиск внутри файлов .

  3. Виртуальная файловая система proc. Используем proc, PID, PPID, дескрипторы стандартных потоков, файловые дескрипторы, аргументы командной строки, подменяем PATH. Переменные окружения (как они работают, область и время действия), в том числе PATH и HOME. Спецсимволы < > >> 2> 2>> &>.

  4. Работаем с учётными записями в Ubuntu. Разграничиваем права доступа.

  5. Применяем sudo и root. Немного про безопасность, проблемы копирования из терминала, про пакеты, которые ставятся курлом.

Добро пожаловать на курс "Командная строка для разработчиков"! Введение и первое занятие уже доступно.

Интереса ради, мы спросили ChatGPT, нужен ли линукс для питонистов.

ChatGPT о важности Linux для python-разработчика

Python-разработчикам может быть полезно использовать операционную систему Linux в своей работе по ряду причин.

Во-первых, Linux обычно является основной платформой для серверных приложений и веб-серверов, которые часто используются для хостинга Python-приложений. Разработчики, работающие с серверными приложениями, должны быть знакомы с Linux, чтобы установить, настроить и поддерживать серверное окружение.

Во-вторых, многие инструменты и библиотеки для Python, такие как NumPy, SciPy и Pandas, часто предназначены для работы в Linux-подобных операционных системах. Разработчики, которые используют эти инструменты, будут иметь преимущество, если они работают на Linux.

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

Наконец, Linux является бесплатной и открытой операционной системой, которая имеет широкое сообщество разработчиков и пользователей. Это означает, что Python-разработчики могут получить доступ к большому количеству бесплатных инструментов, библиотек и ресурсов, которые могут помочь им в их работе.

В целом, использование Linux может значительно улучшить производительность и эффективность работы Python-разработчика, поэтому знание и опыт работы с этой операционной системой могут быть ценными навыками для разработчика.

Как считаете, правы ли нейросети?

Показать полностью 1

Ответ на пост «Моя необычная кошка»1

Чтобы кошка не выпала из окна очень рекомендую антикошку – это металлическая сетка на окно. Москитные сетки не подходят, потому что кошки из окна выпадают вместе с ними. Мне больше нравится вариант "выгул", где есть выступ за окно.

Ответ на пост «Моя необычная кошка» Кот, Домашние животные, Истории из жизни, Длиннопост, Ответ на пост

Мне пришлось дорабатывать, дополнительно закрепив нижнюю платформу – её сносило ветром. Моей кошке там очень нравится сидеть и смотреть

Ответ на пост «Моя необычная кошка» Кот, Домашние животные, Истории из жизни, Длиннопост, Ответ на пост
Ответ на пост «Моя необычная кошка» Кот, Домашние животные, Истории из жизни, Длиннопост, Ответ на пост

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

Ответ на пост «Моя необычная кошка» Кот, Домашние животные, Истории из жизни, Длиннопост, Ответ на пост

И не открывайте окно на проветривание, так как кошка может прыгнуть и застрять. Они звери любопытные и могут внезапно прыгнуть за птичкой

Ответ на пост «Моя необычная кошка» Кот, Домашние животные, Истории из жизни, Длиннопост, Ответ на пост

Всем кошкам и котам здоровья!

Показать полностью 5

Зачем разработчику нужен Linux вообще и терминал в частности

Вклинюсь в бунт полезной темой. Тема "Windows vs Linux" является частой причиной холиваров. Спорить бессмысленно, так как для каждой задачи требуется свой инструмент. Позвольте заинтересовать вас чудесным миром Linux и теми бонусами, которые вы можете получить от использования терминала в повседневной деятельности. Всё разберём на примерах реального использования.

Легко поставить софт

При получении в мессенджере оригиналов фотографий из iPhone мы получаем непонятный .HEIC-файл, а хочется привычных JPG/PNG. Для Linux с помощью менеджера пакетов можно поставить программу-конвертер и применить её

sudo apt update && sudo apt install libheif-examples heif-convert 1.HEIC 1.jpg

Причём в терминале можно активно пользоваться кнопкой tab, чтобы не набирать команду целиком. Это выглядит примерно так: пишем "heif-c", нажимаем tab и получаем полную команду. Работает с командами, именами файлов и даже с настроенными подкомандами: sudo apt i<tab> дополнят команду до install.

Легко автоматизировать процессы

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

for file in *.HEIC; do heif-convert "$file" "${file%.*}.jpg"; done

Да, тут немало нюансов. Ладно, синтаксис do-done и нюансы расстановки точек с запятой можно принять как данность. Применение перебора по маске уже достаточно непростая тема. Обязательные двойные кавычки вокруг переменных вызывают вопросы. Самое неприятное, что всё будет работать и без кавычек, если в названиях нет пробелов. А с пробелами нужны кавычки, но в примере из интернета об этом не скажут. Нюансы удаления расширения у файлов с использованием %.* вообще могут свести с ума, документация на этот счёт огромная и довольно сложная.

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

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

Легко вспомнить

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

И совсем крутой является возможность искать по истории команд. Нажатием сочетания ctrl+R мы переводим терминал в режим обратного поиска по заданной подстроке. Я ввожу ctrl-R, набираю HEIC и получаю нужную команду из истории.

(reverse-i-search)`HEIC': for file in *.HEIC; do heif-convert "$file" "${file%.*}.jpg"; done

Если нужной команды нет, я могу дописать подстроку или нажать ctrl+R повторно для демонстрации предыдущего подходящего значения.

Легко настроить под себя

По умолчанию сохраняется только тысяча последних команд, и эта тысяча достаточно быстро заканчивается. Посмотрел у себя – дефолтную тысячу команд я использовал за 3 недели. Чтобы сделать историю команд почти бесконечной, надо залезть в конфиг. В файле ~/.bashrc для переменных HISTSIZE и HISTFILESIZE поставьте значение в миллион или вроде того.

# в вашем ~/.bashrc

HISTSIZE=1000000

HISTFILESIZE=1000000

Почти у каждой программы есть текстовый конфигурационный файл, с помощью которого можно поменять её поведение. И у текстовой конфигурации много плюсов – её можно посмотреть глазами, её можно сохранить в git и отслеживать изменения, её можно легко нагуглить в интернете. Графический интерфейс программы может меняться, объяснения "нажми сюда, потом туда" неудобны и быстро устаревают.

При этом можно пойти дальше, добавив алиасы для ещё большей скорости работы в терминале. В дополнение к стрелочкам, ctrl+R и tab у нас есть автозамены, они же alias. Писать git status слишком долго, проще написать gs. Вот фрагмент моих алиасов для работы с git

alias gs='git status'

alias gd='git diff'

alias gitc='git commit -m'

alias gl="git log --graph --pretty=format:'%C(yellow)%h%Creset -%C(yellow)%d%Creset %s %Cgreen(%cr) %C(bold blue)<%an>%Creset' --abbrev-commit --date=short "

У git log флаги обеспечивают такое визуальное представление:

Зачем разработчику нужен Linux вообще и терминал в частности Программирование, IT, Разработка, Обучение, Linux, Telegram, Длиннопост

Из секции "прочее" я использую такие интересности

alias ll='ls -alF'

alias la='ls -A'

alias ..="cd .."

alias ...="cd ../.."

alias ....="cd ../../.."

alias h="history | tail -30"

# хрен запомнишь

alias TAR='tar -zcvf' # dest source

alias UNTAR='tar -zxvf' # source

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

Статистика среди разработчиков

Посмотрим, что происходит в индустрии. Stackoverflow проводит ежегодные опросы разработчиков для отслеживания текущих трендов в программировании. В 2022 году в опросе участвовало 70 тысяч разработчиков. Посмотрим отдельные вопросы и ответы на них.

В какой операционной системе вы в основном работаете? (What is the primary operating system in which you work?)

Зачем разработчику нужен Linux вообще и терминал в частности Программирование, IT, Разработка, Обучение, Linux, Telegram, Длиннопост

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

Как вы пользуетесь Git? В вопросе системы контроля версий в общем виде, но 97% используют git. (How do you interact with your version control system? Select all that apply.)

Зачем разработчику нужен Linux вообще и терминал в частности Программирование, IT, Разработка, Обучение, Linux, Telegram, Длиннопост

Интересно, что 84% разработчиков используют интерфейс командной строки. Не удивительно, так как при поиске ответа на сложный вопрос вы попадёте на Stackoverflow, где вам предложат именно консольную команду. Консоль является универсальным языком взаимодействия разработчиков.

Терминал важен для разработчиков

Попробуем запустить веб-сервер на питоне. Штатный результат выглядит так:

python3.10 -m http.server

Serving HTTP on 0.0.0.0 port 8000 (http://0.0.0.0:8000/) ...

Однако вы можете получить вот такой неприятный вывод

python3.10 -m http.server

Traceback (most recent call last)

...

OSError: [Errno 98] Address already in use

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

В терминале с помощью netstat выведем процессы и занимаемые ими порты, а в выводе с помощью grep найдём строку 8000, отвечающую за нужным нам порт

sudo netstat -nltp | grep 8000

tcp 0 0 0.0.0.0:8000 0.0.0.0:* LISTEN 16240/python3.10

Вертикальная черта обозначает конвейер, связывающий вывод левой команды с выводом правой. Теперь можно завершить процесс с идентификатором 16240 с помощью kill

kill 16240

В примере выше, кстати, очень хорошо видна философия Unix – программа должна делать что-то одно, и делать это хорошо. Задача операционной системы – предоставить гибкий клей для объединения различных программ. Мощь кроется в интеграции между программами и умении декомпозировать задачу на кусочки. Сложная задача рассматривается как комплекс более простых, а терминал становится единым языком общения для разработчиков.

Причём можно докрутить конвейер до получения результата в одну строку. Выведем все процессы, найдём порт 8000, выделим 7 столбец, где указан номер процесса, и в нём возьмём первую часть от слеша. Результат подадим в kill в виде аргумента, для этого воспользуемся xargs

sudo netstat -nltp | grep 8000 | awk '{print $7}' | awk -F/ '{print $1}' | xargs kill

Такие однострочники неустойчивы к ошибкам в процессе, если требуется надёжное решение – надо аккуратно писать скрипт. Записал на этот счёт 20-минутное видео Идеальный скрипт на bash, где последовательно показываю процесс создания красивого скрипта с документацией и учётом bash-идиом. В процессе показываю консольный git и интересные фишки терминала. Когда вы овладеете CLI, терминал станет для вас удобной и привычной средой обитания. Для возникшей задачи ваши пальчики сами будут выдавать однострочник, решающий проблему. И выходить из терминала вам больше не захочется.

Вместо netstat можно использовать ss, lsof или fuser, путей решения проблемы всегда более одного. С опытом пополняется пул известных разработчику команд, что позволяет сразу решать проблему или быстро воспринимать нагугленное решение.

Изучается один раз

Из предыдущего пункта вытекает следующий. Графический интерфейс (GUI) учится под каждую программу. Интерфейс командной строки (CLI) учится один раз, дальше только необходимо пополнять пул известных команд за счёт поиска. Причём отдельный инструмент может внести огромный вклад – например, понимание регулярных выражений сразу делает доступным sed, awk и другие инструменты, которые завязаны на регулярках.

Docker для DevOps

Уже достаточно давно технология контейнерной виртуализации Docker стала популярным способом деплоя приложений, который применяется разработчиками. Даже небольшое современное приложение требует фронтенд, бекенд, базу данных, nginx для балансировки и другой магии, автообновление сертификатов. Это 3+ сервиса, объединённые в одно целое с помощью docker compose. GUI для docker существует, но большая часть гайдов и примеров приводятся для терминала. Чем эффективнее вы умеете работать в терминале, тем эффективнее вы сможете работать с докером – решать возникающие проблемы, модифицировать готовое решение под ваши реалии и так далее.

Можно для команды на сервере поднять кучу инструментов – gitlab для разработки, mattermost для коммуникации, систему мониторинга, локальное хранилище и прочее. Для DevOps всё ещё сильнее завязано на bash. CI/CD-пайплайны, "инфраструктура как код" и прочее требуют Linux вообще и bash в частности.

Терминал часто нужен для настройки серверов и развёртывания инфраструктуры в облаке. И тут SSH вообще вне конкуренции для удалённого управления серверами. С помощью SSH вы можете работать с удалённым сервером так же, как с локальным, писать скрипты для автоматизации и многое другое.

Ускоряем работу на примере

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

В качестве поля для экспериментов возьмём утечку rockyou, в которой 139 мегабайт (14 млн) утекших в 2009 году паролей. Замерять время будем с помощью time, смотрим на время real. Решение в лоб состоит в сортировке с флагом --unique или -u и последующем подсчёте строк с помощью команды wc

time cat rockyou.txt | sort --unique | wc -l # 47s у меня

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

Неожиданно, но замена одной команды sort -u на две отдельные команды sort и uniq даёт выигрыш в скорости. Подозреваю, что дело в возможности распараллелить их работу.

time cat rockyou.txt | sort | uniq | wc -l # 43s

Дальше умудрённый опытом пользователь терминала обратит внимание, что команда cat в начале не нужна. Команда sort сама умеет работать с файлом. Убираем лишний cat и получаем ещё бонус в скорости.

time sort rockyou.txt | uniq | wc -l # 33s

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

time LC_ALL=C sort rockyou.txt | uniq | wc -l # 5s

В результате наших действий мы в десять раз сократили время получения уникальных строк в файле. Напоминает про часто поднимаемую тему 10x-разработчиков про десятикратную разницу между крутыми и посредственными разработчиками.

Заключение

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

В канале DevFM мы делимся опытом разработки на python, проектирования систем, работой с базами данных и полезными тулзами. Присоединяйтесь!

Показать полностью 3
Отличная работа, все прочитано!