Если нельзя, но очень хочется, то нужно обязательно и ничего в мире не стоит того, чтобы делать из этого проблему!


Интересна Java? Кликай по ссылке и изучай!
Если тебе полезно что-то из того, чем я делюсь в своем блоге - можешь поделиться своими деньгами со мной.
с пожеланием
столько времени читатели провели на блоге - 
сейчас онлайн - 

четверг, 4 ноября 2021 г.

Что такое ответственность

Вчера узнал истинное значение слова "ответственность" или "responsibility". Это не про "обязан", "надо", "долг", "правила", "вину", "напряг", "гемор", "законы" и "наказание" за невыполнение - это унаследованный совковый менталитет. "Ответственность" - от слова "ответ", а "responsibility" от "response". Иными словами - готовность держать ответ перед реальностью здесь и сейчас. Не завтра, не вчера, а сейчас. "Готовность" скорее не про "нужду", а про внутренний "выбор". Если ты выбираешь держать ответ, что бы ни случилось - значит ты ответственный. Если не желаешь общаться с реальностью в каком-либо вопросе - ты безответственный.

Как-то так.

вторник, 8 июня 2021 г.

Что для меня ENGX?

Мне есть с кем сравнивать. Бывает подключишь человека к проекту - резюме хорошее, собеседование прошло хорошо, вышел на проект, а все как-то никак. Нет, из под него какой-то код конечно же получается, но ни продуктивности, ни лаконичности, ни красоты, чтоли. И спорите с ним до хрипоты, о том, что можно-таки быстрее. В разы быстрее. Вопрос в том, как?..

Потом его увольняешь. Не сработались. Но свято место пусто не бывает - вскоре выходит замена. Очень быстро становится понятно, талант. Инженер в лице которого ты видишь ту самую продуктивность, о которой холиварил с коллегами ранее. Продуктивность, которой могут позавидовать многие Senior. А ведь речь идет про Middle.

Что отличает их? Что дает одному инженеру возможность оторваться от земли оставив остальных с мыслью "это глюк, так не бывает"? Любознательность. Тяга к Engineering Excellence. Вера в то, что можо еще быстрее и при этом одновременно и качественнее. Вопрос в том, как?..

А знаешь, что его волнует каждый день? Он часто говорит: "я переживаю, потому что еще не достаточно разогнался".

Немногно истории

А вот Братья Райт нашего времени
Еще столько всего предстоит открыть!

понедельник, 7 июня 2021 г.

Если много сабрепозиториев, ленька вводить для каждого пароль и не хочется ssh

Команда в помощь под windows
git config --global credential.helper wincred
Под Linux
git config --global credential.helper cache
Отключаем
git config --global --unset  credential.helper
Проверяем что отключили
git config --global credential.helper

Если ошибся с submodules и добавил его как git@ а не https://

Поможет чудо скрипт (на примере codenjoy)
git submodule deinit CodingDojo/games/engine
git rm -f CodingDojo/games/engine
rm -rf .git/modules/CodingDojo/games/engine
git commit -m "Deleted submodule CodingDojo/games/engine"
git submodule add --force https://github.com/codenjoyme/codenjoy-engine.git CodingDojo/games/engine
git commit -m "Add submodule CodingDojo/games/engine"
Что значит - удалить все, и добавить по-новому

пятница, 29 января 2021 г.

Запускаем Docker в Docker

У меня появилась такая задача. Основное приложение codenjoy состоит из компонентов. Каждый компонент-процесс на хостовой машине завернут в Docker. Всеми контейнерами управляет DockerСompose. Один из компонентов - nginx является фасадом, выглядывает наружу, перенаправляя все запросы внутри виртуальной сети созданной DockerCompose.

На сцене появляется новый компонент-процесс, который запускает другие процессы внутри своего Docker управляя им. А раз уж оно само завенрнуто в Docker, то отсюда вывод google('ho to run docker inside docker'). 

 Я понимал что эта идея бредовая и очень пахнет, но мне было интересно как решают подобные проблемы. И решение нашлось. Вовсе не обязательно запускать докер в докере, хоть и можно. Лучше взять докер хостовой машины и дасть доступ к нему изнутри другого докера. Для этого надо подмаунтить вот такую штуковину 

/var/run/docker.sock:/var/run/docker.sock:rw

Сделать это можно либо через ключик -v в команде docker run, либо в блоке volumes docker-compose.yml файла.

docker run -v /var/run/docker.sock:/var/run/docker.sock -ti ubuntu bash 
curl -sSL https://get.docker.com/ | sh
docker ps

Сам же Dockerfile для запуска из под docker-compose.yml у меня такой

FROM java-workspace as dockerized-java-workspace

USER root
ENV DEBIAN_FRONTEND noninteractive

RUN curl -fsSL https://download.docker.com/linux/debian/gpg | apt-key add - \
&& apt-key fingerprint 0EBFCD88 \
&& apt-get -y install software-properties-common \
&& add-apt-repository "deb [arch=amd64] https://download.docker.com/linux/debian $(dpkg --status tzdata|grep Provides|cut -f2 -d'-') stable" \
&& apt-get -y update \
&& apt-get -y install docker-ce \
&& docker -v

Тут java-workspace наследуется в конечном счете от openjdk:11-jdk, т.к. мне нужна еще java на борту.

Детально можно глянуть в этом коммите.