Команда IT специалистов выполнит подготовку инфраструктуры для вашего бизнеса.
Внедрение самых передовых решений и технологий.
Поддержка и сопровождение ваших сервисов.
Выполнение работ под "ключ", от покупки сервера, до настройки автоматизации процессов. 8(977)608-78-62 adm@nixm.ru
Внедрение самых передовых решений и технологий.
Поддержка и сопровождение ваших сервисов.
Выполнение работ под "ключ", от покупки сервера, до настройки автоматизации процессов. 8(977)608-78-62 adm@nixm.ru
remake "русская рулетка"
remake "русская рулетка"
Ввиду повышенной опасности предоставляемой информации настоятельная просьба ко всем
читателям перед выполнением любой части кода из нижепреведнного сценария прочесть
статью до конца.
Как известно даже в самой небольшей строчке кода можно найти некоторые возможности по
улучшению. Сегодня мы с вами разберем очень простенькую но тем не менее смертельно опасную
игру "Русская Рулетка", проведем оптимизацию и конвертируем ее в безопасный в руках пользователя
вариант под названием Remake "Русская Рулетка". И так пишим всем известный код и проводим
разбор фрица:
(Внимание перед выполнением строчки данного кода следует в обязательном порядке
обновить бэкап всей системы)
Для начала определим алгоритм в правилах игры:
В барабан нагана вставляем один патрон, раскручиваем, подносим ствол к виску, жмем на спусковой
крючек, все, любуемся результатом. Новичкам и людям с неокрепшей психикой следует
однозначно потренироваться на муляже:
Теперь вывернем принцип действия. Переменная $RENDOM возвращает случайное число из
интервала 0 - 32767, это положительная часть всех возможных 16 битных чисел. Остаток от деления
на шесть получаем с помощью конструкции $((выражение)) или как в данном случае $[выражение].
Выражение это будет равно одному из ряда от нуля до пяти. Сравниваем с одним из значений, пулю
принимаем за ноль реализовывая тем самым один случайный вариант из шести возможных.
Логические операторы && И(and) и || ИЛИ(or) предоставляют выбор действий в зависимости от
проверки сравнения в нутри объемлющих квадратных скобок и в зависимости от выбора выводится
строка при помощи оператора echo. Незабываем что квадратные скобки это тоже оператор и их
необходимо отделять от других литералов пробелом, исключением является конструкция $[...]
предназначенная для выпонения арифметических операций. Результатом проигрыша будет
по всей видимости отсутствие домашней директории пользователя на жестком диске.
Почему то ни кто не догадался упростить код игры и мы сделаем это самостоятельно, для чего не станем
вычислять остаток от деления а сразу воспользуемся кодом возврата нашего выражения заключив его
в двойные круглые скобки, здесь результат в 0 трактуется как false, а любое другое значение как true.
Заметте что теперь для правильной работы кода мы инвертировали строки оперетора echo.
И даже если мы уберем знак переменной в двойных круглых скобках, код будет продолжать
исправно работать
На этом все, получаем 5 за оптимизацию и 5 за безопасность, можно давать детям.
В помощь экстремалам для первоначального варианта игры всегда команда sudo. Удачи!
читателям перед выполнением любой части кода из нижепреведнного сценария прочесть
статью до конца.
Как известно даже в самой небольшей строчке кода можно найти некоторые возможности по
улучшению. Сегодня мы с вами разберем очень простенькую но тем не менее смертельно опасную
игру "Русская Рулетка", проведем оптимизацию и конвертируем ее в безопасный в руках пользователя
вариант под названием Remake "Русская Рулетка". И так пишим всем известный код и проводим
разбор фрица:
(Внимание перед выполнением строчки данного кода следует в обязательном порядке
обновить бэкап всей системы)
Код: Выделить всё
[ $[$RANDOM % 6] == 0 ] && rm -rf / || echo 'you win!'
В барабан нагана вставляем один патрон, раскручиваем, подносим ствол к виску, жмем на спусковой
крючек, все, любуемся результатом. Новичкам и людям с неокрепшей психикой следует
однозначно потренироваться на муляже:
Код: Выделить всё
[ $[$RANDOM % 6] ==0 ] && echo 'you lose!' || echo 'you win!'
интервала 0 - 32767, это положительная часть всех возможных 16 битных чисел. Остаток от деления
на шесть получаем с помощью конструкции $((выражение)) или как в данном случае $[выражение].
Выражение это будет равно одному из ряда от нуля до пяти. Сравниваем с одним из значений, пулю
принимаем за ноль реализовывая тем самым один случайный вариант из шести возможных.
Логические операторы && И(and) и || ИЛИ(or) предоставляют выбор действий в зависимости от
проверки сравнения в нутри объемлющих квадратных скобок и в зависимости от выбора выводится
строка при помощи оператора echo. Незабываем что квадратные скобки это тоже оператор и их
необходимо отделять от других литералов пробелом, исключением является конструкция $[...]
предназначенная для выпонения арифметических операций. Результатом проигрыша будет
по всей видимости отсутствие домашней директории пользователя на жестком диске.
Почему то ни кто не догадался упростить код игры и мы сделаем это самостоятельно, для чего не станем
вычислять остаток от деления а сразу воспользуемся кодом возврата нашего выражения заключив его
в двойные круглые скобки, здесь результат в 0 трактуется как false, а любое другое значение как true.
Код: Выделить всё
(( $RANDOM % 6 )) && echo 'you win' || echo 'you lose'
И даже если мы уберем знак переменной в двойных круглых скобках, код будет продолжать
исправно работать
Код: Выделить всё
(( RANDOM % 6 )) && echo 'you win' || echo 'you lose'
В помощь экстремалам для первоначального варианта игры всегда команда sudo. Удачи!
Последний раз редактировалось nezabudka 02 май 2015, 17:03, всего редактировалось 1 раз.
"I invented the term Object-Oriented and I can tell you I did not have C++ in mind." - Alan Kay
Re: remake "русская рулетка"
Мне очень нравится питон, и я видела что раздел пока пустует. Обязательно поделюсь в будущем материалом по Python, Ipython и ScapyKycok писал(а):А нет у вас таких советов по питону?
"I invented the term Object-Oriented and I can tell you I did not have C++ in mind." - Alan Kay
- Kycok
- Уважаемый участник
- Сообщения: 280
- Зарегистрирован: 16 янв 2015, 06:53
- Откуда: Санкт-Петербург
- Контактная информация:
Re: remake "русская рулетка"
Очень бы пригодилось! Как раз сейчас пишу монополию, и, скорее всего, есть куски кода, которые можно заставить работать быстрееnezabudka писал(а):Обязательно поделюсь в будущем материалом по Python
- Oleg65
- Местный говорун
- Сообщения: 859
- Зарегистрирован: 18 янв 2015, 10:56
- Откуда: г.Коломна Моск.обл.
Re: remake "русская рулетка"
Этот и подобные способы подробно расписаны в последней версии (предыдущую только пытаюсь сравнивать с последней) Advanced Bash Script Guide
Re: remake "русская рулетка"
А можно немножко яснее что бы у меня мозги не дымились?Oleg65 писал(а):Этот и подобные способы подробно расписаны в последней версии (предыдущую только пытаюсь сравнивать с последней) Advanced Bash Script Guide
"I invented the term Object-Oriented and I can tell you I did not have C++ in mind." - Alan Kay
- Oleg65
- Местный говорун
- Сообщения: 859
- Зарегистрирован: 18 янв 2015, 10:56
- Откуда: г.Коломна Моск.обл.
Re: remake "русская рулетка"
Конечно, это где-то в 16-17 главах (примерно), где объясняется действие [[ ]] и (( )). Точнее укажу чуть позднее (как найду), кстати, главы в предыдущей и последней версиях - не соответствуют друг другу по нумерации. Если не лень самой покопаться - старая версия и новая версияnezabudka писал(а):А можно немножко яснее что бы у меня мозги не дымились?Oleg65 писал(а):Этот и подобные способы подробно расписаны в последней версии (предыдущую только пытаюсь сравнивать с последней) Advanced Bash Script Guide
Re: remake "русская рулетка"
Если чесно то лень. Этот учебник написан очень сухим языком, читать его довольно нудное занятиеOleg65 писал(а):Если не лень самой покопаться - старая версия и новая версия
и я пользуюсь им в основном для справок по определенному вопросу при необходимости так
сказать когда есть интерес. Но с вами я вполне согласна и думаю в этом учебнике описаны многие примеры применения команд в баше.
"I invented the term Object-Oriented and I can tell you I did not have C++ in mind." - Alan Kay
- Oleg65
- Местный говорун
- Сообщения: 859
- Зарегистрирован: 18 янв 2015, 10:56
- Откуда: г.Коломна Моск.обл.
Re: remake "русская рулетка"
Старая версия Глава7 "Проверка условий", Новая версия -7.1 Test Constructsnezabudka писал(а):Если чесно то лень.Oleg65 писал(а):Если не лень самой покопаться - старая версия и новая версия
Re: remake "русская рулетка"
Хочу только добавить, мне очень нравится в консоли как оптимизация кода так и построение заведомо избыточных конструкций, зачастую бесполезных но исправно работающих приемов и порой это бывает намного интересней и увлекательней.
"I invented the term Object-Oriented and I can tell you I did not have C++ in mind." - Alan Kay