
- Видео 7
- Просмотров 19 575
anetto
Добавлен 12 июн 2009
Различные нюансы из жизни разработчика на Python и не только - python, bash, linux, тесты, командная разработка. Разбираю код, нахожу и устраняю проблемы, превращаю плохой код в хороший. Разбираю смежные с разработкой технические навыки, полезные для работы и резюме. Показываю разные инструменты, в том числе git, bash, docker.
Годный текстовый материал ежедневно в телеграмм-канале DevFM.
d53c862b-1ed1-4fc9-83cd-043f4f1cdfb1
Годный текстовый материал ежедневно в телеграмм-канале DevFM.
d53c862b-1ed1-4fc9-83cd-043f4f1cdfb1
Методика измерения времени работы программы. Как загрузка CPU/memory/IO влияет на производительность
Как измерять скорости кода? Как загрузить процессор, оперативную память и подсистему ввода/вывода и как их загрузка влияет на скорость выполнения кода? Экспериментируем с циклом на bash.
Поговорим о методике эксперимента и всяких нюансах. Используем htop, iotop, lscpu, xargs, seq, time, yes, timeout, tail и варим из всего этого суровую смесь.
Телеграмм-канал для middle+ разработчиков t.me/+b7-UPCwNIZdhMDIy
Атака forkbomb в docker ruclips.net/video/SMrL3oU6TqM/видео.html
Бесплатный курс на степике Командная строка для разработчиков - cli-for-dev stepik.org/169291
Про time на SO stackoverflow.com/a/556411/19204439
Как загрузить ресурсы stackoverflow.com/a/41782305/19204439
Про запись time в файл s...
Поговорим о методике эксперимента и всяких нюансах. Используем htop, iotop, lscpu, xargs, seq, time, yes, timeout, tail и варим из всего этого суровую смесь.
Телеграмм-канал для middle+ разработчиков t.me/+b7-UPCwNIZdhMDIy
Атака forkbomb в docker ruclips.net/video/SMrL3oU6TqM/видео.html
Бесплатный курс на степике Командная строка для разработчиков - cli-for-dev stepik.org/169291
Про time на SO stackoverflow.com/a/556411/19204439
Как загрузить ресурсы stackoverflow.com/a/41782305/19204439
Про запись time в файл s...
Просмотров: 500
Видео
Идеальный скрипт на bash 2 | Bash ideal script 2
Просмотров 2,2 тыс.2 месяца назад
В этом видео разбираемся с [] vs [[]] и кавычками вокруг переменных Телеграмм-канал про python и не только t.me/ b7-UPCwNIZdhMDIy Бесплатный курс на степике Командная строка для разработчиков - cli-for-dev stepik.org/course/169291/promo Предыдущее видео ruclips.net/video/FuOgKi8XPkw/видео.html Репозиторий с кодом скрипта gitlab.com/anetto-/bash-ideal... Наглядную таблица сравнения [[ и [ mywiki...
Кто такой тимлид тимлидов
Просмотров 1924 месяца назад
Обсуждаем рабочий день тимлида, проблемы интераптов и санитайзинг рабочего времени. Удачные практики эффективной работы: - боремся с лишними встречами - ограничение на общее число встреч - решение проблем в текстовом виде - тимлид как бутылочное горлышко на code review - нет ничего страшного в асинхронном ответе Инструменты команды: Gitlab, Slack, Jira, Confluence, Zoom, draw.io Что меняется, к...
Ретроспектива силами команды разработки
Просмотров 494 месяца назад
Что такое ретроспектива, зачем она нужна и как её проводить? Обсуждаем наш опыт в этой области t.me/devfm/431
Стрим: python student часть 1 | Stream: python student part 1
Просмотров 1,4 тыс.2 года назад
Часовой стрим по созданию небольшого проекта на python из консоли и редактора vim с использованием gitlab. В видео раскрыты: 1. создание проекта в gitlab 2. консольную работу в git (git status / add / commit / diff / push), в том числе удобные alias для ускорения работы 3. pylint, в том числе выключение некоторых диагностик в тестах 4. создание небольшого проекта на python, в том числе - база т...
Fork-бомба в Docker-контейнере | Forkbomb in Docker
Просмотров 8632 года назад
Посмотрим, как ведёт себя Forkbomb (классическая DoS - Denial-Of-Service attack) внутри Docker-контейнера. Рассматриваются bash-forkbomb, разные ресурсы компьютера с Ubuntu (cpu, mem, pid_max), запуск Docker-контейнера с Ubuntu с отслеживанием docker stats и top на хостовой системе, подсоединение в контейнер через docker-exec Про Forkbomb: ru.wikipedia.org/wiki/Fork-bomb ruclips.net/video/r1Z5D...
Идеальный скрипт на bash | Bash ideal script
Просмотров 14 тыс.2 года назад
Телеграмм-канал про python и не только t.me/ b7-UPCwNIZdhMDIy Репозиторий с кодом скрипта gitlab.com/anetto-/bash-ideal-script Опрос stackoverflow 2022 survey.stackoverflow.co/2022/#section-version-control-version-control-systems , вкладка Professional Developers. Исторический экскурс в популярность гита в разное время в телеграмм t.me/vestnik_info/58 Мой bash конфиг gitlab.com/anetto-/vm/-/blo...
Топ контент, продолжай в том же духе, очень познавательно)
Спасибо за теплые слова)
Мне понравилосб
Радостно :)
На самом деле идеальный скрипт на bash содержит единственный вызов - вызов скрипта на нормальном языке
Ага, всё сводится к mkdir. Но! usage, пачка проверок, документация - это всё в реальной работе разработчика занимает много времени и кода. При этом, условно, если бизнес-логика (которая сейчас один mkdir) вырастет в 10 раз, то вспомогательный код так сильно не вырастет
Огонь
Можете ещё вторую часть посмотреть. А видео forkbomb in docker вообще считаю мега удачным, обязательно попробуйте)
@@MrAnetto завидую вимоводам.
@@nikolaykozlov4888попробуйте vimtutor и вливайтесь в наше коммьюнити ;)
Подписался! Контент нужный! Будет один вопрос, решение на него потерял. В bash толком не соображаю, надо учить автоматизацию. Если разрешите, я его задам ( решение его, возможно, заинтересует обитателей канала ).
Спасибо! Что за вопрос? Задавайте, конечно
@@MrAnetto Open Office при компиляции потребляет все ресурсы компьютера и процесс прекращается. Каким образом обеспечить нормальную сборку таких программ? Если возможно, для подобных ситуаций, дать разъяснение. С программой могу ошибаться, это может быть и Libre.
Дочего же дебильный язык этото басш. И вим просто уёбищьный редактор, прям для садомазахиста. У меня в девние ремена на CP/M и то был редактор удобнее За ролик спасибо, лаконично и голос приятный 😊
Такое ощущения что на видео наложен звук. А так видео очень хорошее, правда git тут лишний
Звук пишу отдельно, да. А без гита код нынче писать не стоит, поэтому вот
красава четко и понятно, однозначно лайк. Надо бы побольше такого контента
Спасибо, стараюсь
Я практически ничего не понял (почти, но многое понял), но мне явно это нужно! Очень годный контент 👍
Приходите ещё, будет понятнее :)
Комментарий для продвижения годноты
Спасибо ;) как вам обилие bash?
Привет.А чем ты загрузил свою оперативу - в простое у тебя было около 9гб
В основном хром с кучей вкладок и виртуалбокс с виндой, плюс по мелочи
Минимальное время выполнения программы не показательнее среднего времени? аномальных выбросов быть не может в сторону меньшего времени. А еще первичный вопрос - какова цель измерения среднего времени? Посмотреть как сработала оптимизация или просто иметь представление на какие временные рамки выполнения рассчитывать в текущей ситуации?
Минимум измерений - хороший кандидат, но немного спорный. Я более общий случай показал, среднее + стандартное отклонение. На мой вкус, это более показательно с точки зрения пользователя тоже Цель - ответ на вопрос товарища из начала ролика по сравнению скорости разных циклов. Для этого минимум, возможно, даже лучше подойдёт, спасибо
Если постараться, то можно придумать причины аномально быстрого завершения. Например, процессоры умеют предугадывать будущие команды и заранее выполняют расчёты. Могут быть ошибки (в программе, в железе), которые приведут к неправильной работе программы. Мы же не проверяем результат на верность. Могут быть эффекты кэширования данных. Первый раз мы взяли данные с диска, а второй раз они были в быстрой памяти винчестера и операции чтения с диска не было.
@@Rayvenor, по факту - всякое кеширование может оказать влияние
@@MrAnetto да. Я забыл отдельно написать кэширование в ОЗУ. Но от него можно избавиться забив память между тестами. А какое ещё бывает? Кэширование в СУБД, но оно не использовалось. Ещё у вас на видео как я понял был выключен swap. В общем случае он включен и если туда попадёт информация, то это замедлит. Ведь не из ОЗУ будет браться, а из накопителя.
@@Rayvenor, а если swap на SSD, то не замедлит. Хотя может довольно быстро привести SSD в негодность циклами перезаписи... Короче, ещё один большой пласт нюансов, которые влияют на производительность
Это neovim + oh my zsh?
Нет, чистый vim + немного плагинов
@@MrAnetto спасиб. А шелл bash или другой?
@@zloymishbash в terminator для деления экрана и настройки цветов
Тут не только bash vim и git есть
Плохо ли? Хорошо!
@@MrAnetto да это же круто 🔥🔥🔥
@sanadylov8574 , то ли ещё будет. Уже выложена вторая часть с нюансами if, и сейчас пишу видео про измерение времени выполнения. Колокольчик, все дела - не пропустите ;)
Прикольно, продолжай)
mkdir dir_name{1..10} for i in {1..10}
Такой вариант тоже показывается в видео и отдельные аспекты его критикуются. В консоли я бы так написал и закончил на этом. В скрипте есть ещё важные аспекты, связанные с расширяемостью и откатом операций
@@MrAnetto mkdir или for по секвенции?
@@shtucer22, рассматривается mkdir диапазона и while. Можно и for зафигачить, конечно for i in {1..3}; do echo $i; done Но концептуально это то же самое
@@MrAnetto ну, делать в башке цикл с инкрементом такое себе. Иногда надо, но редко. Бейсиком пахнет :)
@@shtucer22почему? Конструкция {1..10}, безусловно, прикольнее. Но я не уверен в граничных условиях. Для миллиона итераций она как? Миллиарда? А хрен знает
Использование двойных [[ просто запутает, когда как везде одинарные. И когда привыкаешь к синтаксису, что надо ескейпить символы в баше и вообще виду в posix, то никаких проблем с этим нет. А вот использование мало распространенных вещей больше даст проблем.
Так [[ сейчас и является распространенным и правильным вариантом, в отличие старого легаси в виде test или [. Новичкам, наоборот, следует только [[ показывать как единственно верное решение
В мануале по башу написано, что кавычки обязаны быть везде вокруг переменных. Всё, никаких исключений.
О каком мануале речь? Перечитал секцию parameters в man bash, там такого нет
Спасибо! Thankyou!!!
Надо же прошло всего лишь полгода а я помню.А я по старинке использую одинарные квадратные скобки и если сравниваю числа то переменная без двойных кавычек а также -eq -gt -le и так далее а если сравниваю строки то == и переменная в двойных кавчках но также люблю такую конструкцию if [[ "$var" == * "privet" * ]]; then типа аналог indexOf
Когда используется [[]] можно не брать переменные в кавычки. И ещё в этом случае можно использовать <> вместо -ne. Но это уже не posix, и если нужна обратная совместимость, лучше не использовать. В общем, я к чему. Тут либо на [] поменять можно, либо "" убрать
Прямо сейчас в процессе записи видео, где поясняю, почему надо [[ и не надо [, и ещё почему лучше -lt, чем < А кавычки в баше лучше всегда пихать, даже когда они могут быть не нужны
@@MrAnetto интересно, ждём.
Для тех кто не знает, но использование подобных операторов (предназначенных в большей мере строковым сравнениям) как -lt и ему подобных не является оптимизированным решением особенно для циклов. Взяв например разницу в переменную total от переменной start и end в конструкции которых будет содержатся $(date +%s%N), зациклим тело и сравним : > test i=1 while (( $i < 1000 )); do start=$(date +%s%N) if (( 1 < 3 )); then echo l; fi end=$(date +%s%N) total=$(( $end - $start )) echo $total >> test i=$(( $i + 1 )) done awk 'NR == 1 || $1 < min {min = $1} END {print min}' test изменив тело условия в цикле на упрощенный оператор который используется в основном для строковых сравнений то получим ощутимую разницу в наносекундах. У меня было с числовым минимальная разница 585841 и со строковым 661532 наносекунд. К сожалению скрипт не идеален. Ищу тех кто знает больше( Ну или например традиционный scp и cat используя ssh, преимущественно быстрее выполняет cat + ssh
600 000 наносекунд == 0.0006 секунды. Представленная вами разница в пределах погрешности измерений. Более того, если вам важны 10% скорости, то, возможно, bash не подходящий инструмент) собственно, однострочник типа mkdir {1..30} будет быстрее if. Но в видео же речь про поддерживаемость кода, а не скорость выполнения. Повторяюсь, возьмите Си и будет в сотни раз быстрее
@@MrAnetto Несомненно разница в скорости не столь велика, я лишь подчеркнул почему стоит делать так, а не иначе, ну и касательно "к сожалению скрипт не идеален" это не оскорбление, а отсылка "всем не угодишь", поэтому идеальных скриптов нет, ведь найдется тот кому не понравится. Если у вас есть источники информации по нетрадиционным методам работы bash, я бы с радостью черпнул информацию, так как я занимаюсь сборками Linux и внедряю в организации. Касательно Си, конечно хороший выбор в скорости выполнения необходимых задач, можно было бы спуститься ниже, но тем не менее нужен многолетний опыт для того чтобы не допустить уязвимость в собственном решении, к сожалению таковой опыт у меня отсутствует (
@АлексКорякин , всегда рад дискуссии. Если будет время, запишу видео про корректный замер времени выполнения, как я его вижу. Что под нетрадиционными способами имеете в виду? У меня есть базовый курс по введению в Линукс для разработчиков stepik.org/course/169291/promo Там основы, на мой вкус, наиболее полезные для старта
ruclips.net/video/oX9N_uxlFgE/видео.htmlsi=TZ381XiTYYr8L1dC
🤔mkdir {1..10}
Про это говорится на 5:25. Плюс за ещё более интересными практиками загляните в наш бесплатный курс на степике cli-for-dev, командная строка для разработчиков
Супер!
Спасибо :)
писать можно что угодно и сколько угодно без гита) и пишется Без гита. а для хранения строчек кода и используется гит. но видос шикарен
По stackoverflow developer survey 2023, 97% разработчиков используют git. А не пользуются системой контроля версий вообще менее 1.5% разработчиков
@@MrAnetto знаете,мне как то все равно на рейтинги,они аще никакого смысла в отрыве от контекста не имеют. мое сообщение- я могу писать код и для этого мне не нужен гит. мне нужны совсем другие инструменты,IDE например. код и гит- это параллельные технологии. я это имел в виду. а цыфры-это просто набор символов
@@MrChelovek68, а ещё без IDE можно писать код. Но так почти никто не делает, потому что с IDE быстрее, удобнее и эффективнее. Аналогично с git - это инструмент, без которого работать современному разработчику странно. Можно рыть яму руками, а не лопатой. Но зачем?
спасибо, как раз для такой обезьяны как я
Кто ты, воин?! 😮😮 Где самореклама или хотя бы приветствие/прощание? За 20 минут было ли хотя бы одно лишнее слово? Как добиться такого же уровня конструктивности и лаконичности?! Ты вообще человек?)
Привет тебе, и спасибо за добрые слова :)
Фантастически понятно. Огромное спасибо !
Очень рад, что вам понравилось
Никто не любит скрипты на баше более, чем в одну строку, вот этого предостаточно, всё, остальное это оверинжениринг и Сезифов труд for i in {1..10}; do mkdir $i ; done
Продолжайте свои видео. Так все доступно, информативно!
Спасибо! Планирую плотно вернуться к записи видео
Привет.Можешь помочь со скриптом.Я пытаюсь написать скрипт на bash или perl который шифрует текстовый файл (хотя бы просто ксорит содержимое файла) и не получается.Perl для этого больше приспособлен но тоже не получается - всё время спотыкаюсь на нечитаемых символах \b и так далее.В итоге у меня не получилось а было очень нужно вы итоге взял и быстренько написал это на C но часто возвращаюсь к этому скрипту и всё равно не выходит.Смысл такой: в терминале запускаем прогу (скрипт) с аргументом например 75 (число) и скрипт должен сделать xor со всеми байтами из файла.Должно получиться например файл до шифрования был 395 байт и после он должен быть тоже 395 но содержимое прочитать не возможно
Привет! В примере 75 - это число, с которым надо xor сделать? В баш так себе с бинарными файлами. Но посмотрю, что можно сделать
@@MrAnetto да 75 это число с которым нужно делать xor
Отличное видео! Спасибо вам за труд!
Спасибо!
привет. У меня к вам одна просьба, если можно?
?
Видимо это и была просьба)
Для большей совместимости, кстати, лучше использовать такой шебанг: #!/usr/bin/env bash
Только для питона такое встречал, для базовых штук типа bash или sh не видел, чтобы кто-то так делал. В какой ситуации баш не будет по этому пути, при этом env будет?
а еще лучше which bash
Отличная подача материала! Спасибо!
Спасибо!
Для проверки правильнее ведь использовать флаг -d, который проверяет только на наличие папки с таким именем. В остальном видео супер)
Если не существует такого каталога, то надо потом всё равно проверять существование файла. При этом пользователю можно писать разное сообщение об ошибках, это да
Спасибо, полезное видео
Стараюсь. Скоро 2 часть
Подскажите, а нужно ли делать новую ветку при копировании с гит лаб?
С какой целью? Если речь о клонировании проекта для запуска, то ветку делать не требуется - используйте ту master или main, что уже есть
@@MrAnetto спасибо.
прекрасная работа! давно не встречал материал такого качества! отличная подача материала - все ясно и понятно! Спасибо!
Спасибо за оценку) ps: "не качества", хех
Отличная подача материала. Спасибо! У меня при достижении в докере максимума PPID, докер просто закрывается.
Welcome) Да, докер может сам вырубить контейнер. Но уже сильно после того, как повесит всю систему
Командир, продолжение будет?
Естественно. Просто дело небыстрое
@@MrAnettoобманул :(
@@ВладимирШешулков, будет, будет. Ещё и этот переснять хочу, много чего в интерфейсе гитлаба поменяли. Плюс на виде "дребезг", который тоже убрать хочу)
@@MrAnettoслушай, а тебе нужна помощь с контентом? ) По bash, docker и сетям например
@@ВладимирШешулков, контента много не бывает :) а что есть и в каком виде?
Постоянно у тебя при переключении между окнами появляются некие артефакты вверху экрана.
Оказалось, что сделанная ранее починка мерцания отвалилась после перезагрузки. Опенсорс такой опенсорс иногда, жуть) Поправлю в следующем выпуске
Ничего не понял но подписался, кажеться что то годное!
Welcome сюда за видео-форматом и в телеграмм за текстовым
Просто шикарно. Никогда информация не заходит в голову так же хорошо, как через практику. Спасибо за видео, жду следующих выпусков!
Тут важно сесть и самому такую работу проделать над своим скриптом. Потому что на практике это сложнее, чем кажется
с улучшением качества звука и фиксом мерцаний сверху стало заметно приятнее, поставил три лайка какгрица
Что ещё интересного рассмотреть? Принимаю заявки
@@MrAnetto магические методы в python
@@dull7084 и метатаблицы в lua)
Странно это читать если учитывать тот факт, что это самое первое видео на канале