Кто ты, воин?! 😮😮 Где самореклама или хотя бы приветствие/прощание? За 20 минут было ли хотя бы одно лишнее слово? Как добиться такого же уровня конструктивности и лаконичности?! Ты вообще человек?)
Если не существует такого каталога, то надо потом всё равно проверять существование файла. При этом пользователю можно писать разное сообщение об ошибках, это да
Когда используется [[]] можно не брать переменные в кавычки. И ещё в этом случае можно использовать вместо -ne. Но это уже не posix, и если нужна обратная совместимость, лучше не использовать. В общем, я к чему. Тут либо на [] поменять можно, либо "" убрать
Прямо сейчас в процессе записи видео, где поясняю, почему надо [[ и не надо [, и ещё почему лучше -lt, чем < А кавычки в баше лучше всегда пихать, даже когда они могут быть не нужны
Привет.Можешь помочь со скриптом.Я пытаюсь написать скрипт на bash или perl который шифрует текстовый файл (хотя бы просто ксорит содержимое файла) и не получается.Perl для этого больше приспособлен но тоже не получается - всё время спотыкаюсь на нечитаемых символах
\b и так далее.В итоге у меня не получилось а было очень нужно вы итоге взял и быстренько написал это на C но часто возвращаюсь к этому скрипту и всё равно не выходит.Смысл такой: в терминале запускаем прогу (скрипт) с аргументом например 75 (число) и скрипт должен сделать xor со всеми байтами из файла.Должно получиться например файл до шифрования был 395 байт и после он должен быть тоже 395 но содержимое прочитать не возможно
Для тех кто не знает, но использование подобных операторов (предназначенных в большей мере строковым сравнениям) как -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 Там основы, на мой вкус, наиболее полезные для старта
@@MrAnetto знаете,мне как то все равно на рейтинги,они аще никакого смысла в отрыве от контекста не имеют. мое сообщение- я могу писать код и для этого мне не нужен гит. мне нужны совсем другие инструменты,IDE например. код и гит- это параллельные технологии. я это имел в виду. а цыфры-это просто набор символов
@@MrChelovek68, а ещё без IDE можно писать код. Но так почти никто не делает, потому что с IDE быстрее, удобнее и эффективнее. Аналогично с git - это инструмент, без которого работать современному разработчику странно. Можно рыть яму руками, а не лопатой. Но зачем?
@sanadylov8574 , то ли ещё будет. Уже выложена вторая часть с нюансами if, и сейчас пишу видео про измерение времени выполнения. Колокольчик, все дела - не пропустите ;)
Ага, всё сводится к mkdir. Но! usage, пачка проверок, документация - это всё в реальной работе разработчика занимает много времени и кода. При этом, условно, если бизнес-логика (которая сейчас один mkdir) вырастет в 10 раз, то вспомогательный код так сильно не вырастет
Про это говорится на 5:25. Плюс за ещё более интересными практиками загляните в наш бесплатный курс на степике cli-for-dev, командная строка для разработчиков
Только для питона такое встречал, для базовых штук типа bash или sh не видел, чтобы кто-то так делал. В какой ситуации баш не будет по этому пути, при этом env будет?
Такой вариант тоже показывается в видео и отдельные аспекты его критикуются. В консоли я бы так написал и закончил на этом. В скрипте есть ещё важные аспекты, связанные с расширяемостью и откатом операций
@@shtucer22, рассматривается mkdir диапазона и while. Можно и for зафигачить, конечно for i in {1..3}; do echo $i; done Но концептуально это то же самое
@@shtucer22почему? Конструкция {1..10}, безусловно, прикольнее. Но я не уверен в граничных условиях. Для миллиона итераций она как? Миллиарда? А хрен знает
Просто шикарно. Никогда информация не заходит в голову так же хорошо, как через практику. Спасибо за видео, жду следующих выпусков!
Тут важно сесть и самому такую работу проделать над своим скриптом. Потому что на практике это сложнее, чем кажется
Фантастически понятно. Огромное спасибо !
Очень рад, что вам понравилось
красава четко и понятно, однозначно лайк. Надо бы побольше такого контента
Спасибо, стараюсь
с улучшением качества звука и фиксом мерцаний сверху стало заметно приятнее, поставил три лайка какгрица
Что ещё интересного рассмотреть? Принимаю заявки
@@MrAnetto магические методы в python
@@dull7084 и метатаблицы в lua)
Странно это читать если учитывать тот факт, что это самое первое видео на канале
Огонь
Можете ещё вторую часть посмотреть. А видео forkbomb in docker вообще считаю мега удачным, обязательно попробуйте)
@@MrAnetto завидую вимоводам.
@@nikolaykozlov4888попробуйте vimtutor и вливайтесь в наше коммьюнити ;)
Кто ты, воин?! 😮😮
Где самореклама или хотя бы приветствие/прощание? За 20 минут было ли хотя бы одно лишнее слово? Как добиться такого же уровня конструктивности и лаконичности?! Ты вообще человек?)
Привет тебе, и спасибо за добрые слова :)
Для проверки правильнее ведь использовать флаг -d, который проверяет только на наличие папки с таким именем. В остальном видео супер)
Если не существует такого каталога, то надо потом всё равно проверять существование файла. При этом пользователю можно писать разное сообщение об ошибках, это да
Когда используется [[]] можно не брать переменные в кавычки. И ещё в этом случае можно использовать вместо -ne. Но это уже не posix, и если нужна обратная совместимость, лучше не использовать. В общем, я к чему. Тут либо на [] поменять можно, либо "" убрать
Прямо сейчас в процессе записи видео, где поясняю, почему надо [[ и не надо [, и ещё почему лучше -lt, чем <
А кавычки в баше лучше всегда пихать, даже когда они могут быть не нужны
@@MrAnetto интересно, ждём.
Такое ощущения что на видео наложен звук. А так видео очень хорошее, правда git тут лишний
Звук пишу отдельно, да. А без гита код нынче писать не стоит, поэтому вот
Привет.Можешь помочь со скриптом.Я пытаюсь написать скрипт на bash или perl который шифрует текстовый файл (хотя бы просто ксорит содержимое файла) и не получается.Perl для этого больше приспособлен но тоже не получается - всё время спотыкаюсь на нечитаемых символах
\b и так далее.В итоге у меня не получилось а было очень нужно вы итоге взял и быстренько написал это на C но часто возвращаюсь к этому скрипту и всё равно не выходит.Смысл такой: в терминале запускаем прогу (скрипт) с аргументом например 75 (число) и скрипт должен сделать xor со всеми байтами из файла.Должно получиться например файл до шифрования был 395 байт и после он должен быть тоже 395 но содержимое прочитать не возможно
Привет! В примере 75 - это число, с которым надо xor сделать?
В баш так себе с бинарными файлами. Но посмотрю, что можно сделать
@@MrAnetto да 75 это число с которым нужно делать xor
спасибо, как раз для такой обезьяны как я
привет. У меня к вам одна просьба, если можно?
?
Видимо это и была просьба)
Для тех кто не знает, но использование подобных операторов (предназначенных в большей мере строковым сравнениям) как -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
Там основы, на мой вкус, наиболее полезные для старта
Это neovim + oh my zsh?
Нет, чистый vim + немного плагинов
@@MrAnetto спасиб. А шелл bash или другой?
@@zloymishbash в terminator для деления экрана и настройки цветов
писать можно что угодно и сколько угодно без гита) и пишется Без гита. а для хранения строчек кода и используется гит. но видос шикарен
По stackoverflow developer survey 2023, 97% разработчиков используют git. А не пользуются системой контроля версий вообще менее 1.5% разработчиков
@@MrAnetto знаете,мне как то все равно на рейтинги,они аще никакого смысла в отрыве от контекста не имеют. мое сообщение- я могу писать код и для этого мне не нужен гит. мне нужны совсем другие инструменты,IDE например. код и гит- это параллельные технологии. я это имел в виду. а цыфры-это просто набор символов
@@MrChelovek68, а ещё без IDE можно писать код. Но так почти никто не делает, потому что с IDE быстрее, удобнее и эффективнее. Аналогично с git - это инструмент, без которого работать современному разработчику странно. Можно рыть яму руками, а не лопатой. Но зачем?
Тут не только bash vim и git есть
Плохо ли? Хорошо!
@@MrAnetto да это же круто 🔥🔥🔥
@sanadylov8574 , то ли ещё будет. Уже выложена вторая часть с нюансами if, и сейчас пишу видео про измерение времени выполнения. Колокольчик, все дела - не пропустите ;)
На самом деле идеальный скрипт на bash содержит единственный вызов - вызов скрипта на нормальном языке
Ага, всё сводится к mkdir. Но! usage, пачка проверок, документация - это всё в реальной работе разработчика занимает много времени и кода. При этом, условно, если бизнес-логика (которая сейчас один mkdir) вырастет в 10 раз, то вспомогательный код так сильно не вырастет
🤔mkdir {1..10}
Про это говорится на 5:25. Плюс за ещё более интересными практиками загляните в наш бесплатный курс на степике cli-for-dev, командная строка для разработчиков
Для большей совместимости, кстати, лучше использовать такой шебанг:
#!/usr/bin/env bash
Только для питона такое встречал, для базовых штук типа bash или sh не видел, чтобы кто-то так делал. В какой ситуации баш не будет по этому пути, при этом env будет?
а еще лучше which bash
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}, безусловно, прикольнее. Но я не уверен в граничных условиях. Для миллиона итераций она как? Миллиарда? А хрен знает