diff --git a/content/posts/rpg_lvl_03.md b/content/posts/rpg_lvl_03.md new file mode 100644 index 0000000..49ec187 --- /dev/null +++ b/content/posts/rpg_lvl_03.md @@ -0,0 +1,62 @@ ++++ +draft = false +date = 2023-08-27T07:08:08+04:00 +title = "День третий" +description = "Поиски сокровища" +slug = "" +authors = ["Viktar Ivanou"] +tags = ["python"] +categories = [] +externalLink = "" +series = ["magic-world"] ++++ + +# Сегодня мы отправимся в лес... + +![Beautiful Forest](/forest.jpg) + +Рядом с замком растет небольшой лес, в котором растут 10000 деревьев. Все деревья на вид совершенно обычные, но иногда самое обычное, бывает особенным. + +Лазая по библиотеке мы узнали как нам отыскать особенное дерево. Внутри каждого дерева есть что-то. В нашем случае это json ответ от сервера. Можем считать что каждый символ - это колечко(которые мы считаем, чтобы узнать возраст дерева). Если мы сможем посчитать количество символов в первой тысяче деревьев, а потом отнять эту цифру от количества символов в последней тысяче. Мы и узнаем какое дерево нам нужно. + +Не сложно, но должно быть интересно :) Я рекомендую остановиться здесь и пойти попробовать посчитать. Ну или можно продолжить чтение. + +# Разбор + +Задача на самом деле не очень сложная. По большому счету все что нам нужно - это "вскрыть" 1000 деревьев, посчитать колечки, потом сложить все цифры вместе. Сделать то же самое с последней тысячей и отнять одно от второго. + +Каждый раз когда нам предстоит сделать одно и то же с большим количеством объектов, первое, что приходи в голову это использовать цикл. В нашем случае мы будем использовать for: + +```python + +for i in range(1000): + ... +``` + +Можно сказать что функция range() позволит нам пробежаться по определенному диапазону значений. В нашем случае от 0(потому что мы не указывали стартовый номер) до 1000. И с каждым разом i будет увеличиваться на 1. + +Например: + +```python +for i in range(100, 300): + # i == 100 + # i == 101 + .... + # i == 299 +``` + +Верхний порог не включается. Поэтому в нашем примере i не станет 300, а закончиться на 299. Об этом важно помнить. Потому что в одна из самых распространённых ошибок в программировании, это ошибка на единичку. :) + +```python +sum([1, 2, 3, 4, 5]) # равно 15 +``` + +Функция sum() может помочь нам сложить все значения внутри списка. Я думаю это полезная возможность о которой стоит помнить. А функция len() может рассказать нам сколько символов хранится в строке(не только это, но для нашего примера...) + +```python +len('I know how to count!') # Равно 20 +``` + +Еще один важный момент. Когда бы смотрим содержимое папки с помощью listdit(). Нет гарантии что элементы будут отсортированы. Поэтому, чтобы быть уверенными в том что элементы находятся в нужном нам порядке, их придется отсортировать отдельно. О сортировке мы уже немного говорили в первый день. Можно заглянуть туда, если нужно + +Имея все эти кусочки пазла осталось только собрать их воедино, и узнать результат. Вперед! diff --git a/content/posts/why-i-love-terminal.md b/content/posts/why-i-love-terminal.md new file mode 100644 index 0000000..6efea0b --- /dev/null +++ b/content/posts/why-i-love-terminal.md @@ -0,0 +1,47 @@ ++++ +draft = true +date = 2023-08-26T20:46:15+04:00 +title = "Почему мне нравиться терминал" +description = "Я в очередной раз воодушевился работой в терминале" +slug = "" +authors = ["Viktar Ivanou"] +tags = ["bash", "linux", "terminal"] +categories = ["linux", "bash"] +externalLink = "" +series = [] ++++ + +# Терминал + +![the matrix](/the-matrix.webp) + +Еще со времен моего детства, когда я в первый раз смотрел "Матрицу", меня впечатлила работа "операторов". Когда они смотрели в свой монитор и писали комманды в терминал. И в это время на экране происходили очень не понятные, но очень круто выглядящие процессы. После этого были еще фильмы и еще терминалы :) И я мечтал о том, что когда нибудь и у меня будет возможность стать одинм из них, заклинателей терминала! Но когда у меня наконец появился доступ к компьютеру, интернет был еще редкостью, а в нашем небольшом поселке найти книги по работе с компьютером было не найте. Уже тем более "Как работать в консоли". Поэтому, моим желаниям научиться так же круто делать штуки в коммандной строке, не суждено было сбыться. И вместо этого я прожег свое время играя в The Elder Scolls. + +![The Elder Scrolls III: Morrowind](/morrowind.jpg) + +Но прошло время, Х колличесто лет. Мин изминенился, изменился и я. Интернет перестал быть редкостью. Контент наполнил Ютуб и т.д.И по разным причинам я решил перейти на линукс как свою основную, и (почти) единственную систему. И мои приключения в мире коммандной строки начались снова. Но очень скоро интерес мой поугас т.к. я не совсем представлял(на том этапе) зачем мне нужен терминал, если я могу сделать все тоже самое как "обычный смертный". Но чем больше я пользовался терминалом, тем больше мне это нравилось. Такие вещи как настроить яркось, или режим для второго монитора, перестали быть "волшебством по нажатию кнопки". Я стал больше понимать что происходит на самом деле. И мне это нравилось. + +Когда я снова стал увлекаться разработкой и программированием. Любовь к работе в консоли принесла свои результаты. Когда мне понадобилось создать более 5000 файлов, которые бы соответсвовали названиям книг из списка. Это было просто: + +```bash +$ cat titles_list.txt | xargs touch +``` + +И всё, готово! + +Для этого же проекта мне нужно было создать 10.000 файлов и в каждый файл я зотел поместить текст полученный с api. Можно было конечно написать скрипт на (вставить желаемый язык прогроммирования). Но мне хотелось прокачать свои консольные навыки. Тем более, что совсем недавно я узнал о gnu parallel который позволяет запускать задачи паралельно друг другу. + +Для начала я создал 10.000 пустых файлов: + +```bash +$ printf "joke_number_%d\n" {1...10000} | xargs touch +``` + +После этого: +```bash +$ ls | parallel 'curl -H "Accept: application/json" https://icanhazdadjoke.com/ -o {}' +``` + +Можно было использовать for цикл. Можно было объеденить эти две комманды в одну. Наверное можно было сделать лучше. НО, уменя получилось! Получилось настолько хорошо, что я привысил лимит запросов на сервер в минуту. + +И что мне нравиться больше всего - это то, что комманды больше не кажуться мне магическими заклинаниями, в которых я ничего не понимаю, но если сделать так... то все получается как надо. Наоборот, каждая команда в отдельности это маленький кусочек лего. Который выполняет свою задачу. И комбинируя одни и теже "кусочки лего" можно сделать все, что тебе захочиться. diff --git a/static/forest.jpg b/static/forest.jpg new file mode 100755 index 0000000..0043784 Binary files /dev/null and b/static/forest.jpg differ diff --git a/static/morrowind.jpg b/static/morrowind.jpg new file mode 100755 index 0000000..09d1d72 Binary files /dev/null and b/static/morrowind.jpg differ diff --git a/static/the-matrix.webp b/static/the-matrix.webp new file mode 100755 index 0000000..8ce6a28 Binary files /dev/null and b/static/the-matrix.webp differ