14 дней до каникул: мозг перегружен
За окном ветер с дождём стегает крыши домов. Хорошо так лупит, с оттягом. А на нашем чердаке относительно тепло, сухо и самое время просыпаться. Честно говоря, дрых бы до 11-12 утра, но работа не волк, сама в лесом не уйдёт, а значит придётся вставать и разбираться.
Завариваю чай, готовлю компьютер к трудовому дню, привожу в порядок голову, где в это время нет ни одной мысли, кроме “Ыыыыыы”.
Кстати, фоточки за ночь докачались в облако, что очень неплохо. Формально их можно было бы удалить, но пока подержу. Есть у меня смутные подозрения.
Этим утром выяснилось три момента.
- Во-первых, пятница, что само-по себе хорошо. Да не простая, а распродажная. Торганоиды “начали” её ещё в среду, но это всё развод для клопов. Пятница, это когда завтра выходные! Так что нефиг обманывать!
- Во-вторых, отпуск внезапно и очень ровно вклинился между выходными и новогодними праздниками. Т.е. рассчитывал на 18 дней, а получаю 30! Я обалдел когда это увидел.
- В-третьих, поскольку отпуск начинается в понедельник (13 декабря), то отдыхать я начну с субботы (11 декабря), что на 2 дня раньше ожидаемого.
В общем, новость приятная. Получается, до моих персональных каникул 14 дней и сколько-то там часов. Ну или 11 рабочих дней (включая текущий). Как-бы не мало, но и не то чтобы очень много. Нужно успеть всё сделать.
Новый слоган
Просто, надёжно, дёшево – вот три важнейших критерия хорошего изобретения.
Взять например морзянку. Почему её используют до сих пор? Она же медленная (по сравнению с современными средствами передачи данных) и требует знания азбуки Морзе. Так какого лешего?
А вот какого!
- Высокая помехозащищённость.
- Узкий канал передачи.
- Возможность воспринимать код на слух.
- Возможность кодировать сообщения вручную.
- Возможность принимать и записывать с помощью примитивных (очень дешёвых или даже кустарных) устройств.
Видишь? Вот и я вижу. И плевать на скорость, когда дёшево, надёжно и без лишней зауми.
Можно конечно просто голосом и по рации. Но морзянкой передать буквенно-цифровой шифр можно, а голосом замаешься. Потому, что на слух очень легко перепутать буквы.
Приходится вместо одной буквы говорить целое слово. Вместо М – Мама, вместо В – Вася и т.д. Это дольше чем морзянка и всё-равно хуже защищено от помех.
К тому-же, рация сложнее (а значит не надёжнее) выключателя (ключа) который просто включает/выключает подачу сигнала.
Таких изобретений полно. Спичка, открывашка (или вовсе нож), бельевая верёвка, иголка. Всё это можно усовершенствовать. Давно есть электроподжиг, сушильные машины, электрооткрывашки и прочее. Они удобнее, но дороже, не так надёжны, и не настолько просты.
Но дело не только в простоте. Тут важен баланс.
Трут и огниво канули в лету. Как и перья для письма. И тем и другим пользуются, но очень узко и редко.
Спичка надёжнее, проще, компактнее и удобнее чем огниво. Стоит смешные копейки. Ей не нужен трут.
Шариковая ручка сложнее пера, но перо требует таскать с собой чернильницу. Чернила проливаются или высыхают при хранении. Перо нужно постоянно макать в чернильницу, прерывая письмо. Пером легко поставить кляксу, а чернила на бумаге высыхают не сразу и легко смазываются. Перо, это один большущий геморрой.
Перьевая ручка, гораздо лучше пера. Я предпочитаю писать именно её. Даже гельевые мне меньше нравятся. Но шариковая всё-равно проще и надёжнее.
Создавая изобретение очень легко пойти по пути усложнения. Речь об этом.
– Здравствуй, Отпуск!
– Здравствуй, Медный Таз!
– Не желаешь-ли накрыться мною?
И пока Отпуск думает, я начинаю легонько нервничать.
Что случилось? Нечего! Пока. Но очень даже может, и тогда шансы принять предложение таза будут 50 на 50.
Для чего нужен Docker?
Внезапный вопрос, не так ли?
Год назад я устроился в Р1. Прежде чем приступить к работе, мне нужно было подготовить рабочее окружение. Задачкой это оказалось долгой и непростой. Нужно было установить кучу софта и настроить взаимосвязи между программами.
Не хотел бы я заниматься этим снова.
Так вот, Docer позволяет создать контейнер, где в конфигурации уже описаны все необходимые взаимодействия. Т.е. по хорошему, если бы это было в традициях Р1, хватило бы установки докера и применения нужного конфига. И всё.
Говорят, что всё само бы скачалось и работало как надо без всяких “танцев с бубном”. Но так ли это на самом деле?
Для начала, ввожу в командную строку команду docker. Таким образом, проверяю установлен он у меня или нет. Если нет – устанавливаю.
Затем – docker-compose. Его тоже нужно установить.
А теперь, для примера, ввожу: docker pull ubuntu:18.10
Эта команда скачает образ операционной системы Ubuntu, версии 18.10.
Чтобы проверить, что образ скачался, набираю docker images и вижу, что да.
Вот и отлично. Сразу несколько команд освоил.
Сам скачанный образ меняться не будет. Он неизменен. Все “сохранёнки” будут лежать отдельно от образа. Локально.
Ещё одна команда docker ps
Она показывает какие образы в данный момент крутятся в памяти. У меня их два, ещё с прошлого проекта. Возможно пришло время их прибить.
Теперь про запуск контейнера. Есть такая команда RUN.
Например, я ввожу docker run ubuntu:18.10 echo ‘Hello Word!’ На человеческий язык это переводится как: Эй, Докер, запусти мне образ убунты 18.10 (он у тебя уже скачан) и введи в консоли этой убунты команду “Вывести текст ‘Hello Word!’.
В результате, в консоли выведется ‘Hello Word!’. Фокус в том, что сама убунта запустилась, выполнил команду и выключит контейнер.
Контейнер, это образ + сохранёнки. И команда run всякий раз создаёт новый контейнер. Создаёт, запускает в нём то что мне надо, и выключает.
Что делать, если я хочу запустить убунту, и ввести много команд? Т.е. поработать в ней как если бы она была у меня где-нибудь установлена и включена.
Для этого есть параметры. Вводим docker run -it ubuntu:18.10 /bin/bash
-it, вместе с /bin/bash как раз позволяет работать внутри контейнера через терминал.
Команда exit (в этом терминале) закроет контейнер.
Однако, закрыть контейнер вовсе не значит удалить. Если ввести команду docker ps -a, можно увидеть что контейнер ещё существует и узнать его ID (последняя строка, столбец CONTAINER_ID).
А зная ID контейнер можно запустить снова.
Например:
docker start CONTAINER_ID
docker ps
docker exec -it CONTAINER_ID /bin/bash
Вместо CONTAINER_ID вписываем тот самый ID, который подсмотрен командой docker ps -a
Зная ID контейнера, его можно остановить
docker stop CONTAINER_ID
или удалить
docker rm CONTAINER_ID
Можно проще, командой docker run -it –rm ubuntu:18.10 /bin/bash
Благодаря –rm контейнер удалится после того, как я из него выйду, и мне не понадобится шаманить в поисках ID.
Вечер пятницы оказался на редкость сумасшедшим и мерзким.
Напишите комментарий