Что такое Git? Зачем он нужен и как использовать? (примеры из практики)


Друзья, в этом видео я расскажу вам о том, что такое Git, зачем он нужен, как его использовать и как с его помощью оптимизировать и упростить работу в команде. Мы поговорим обо всех особенностях использования этого инструмента и я наглядно покажу как с ним работать.

Что такое git?
Git — это система контроля версий, а если сказать простым языком то это программа, инструмент, которая позволяет нам фиксировать наши изменения в коде, а также благодаря этой фиксации позволяет нескольким людям или даже командам вместе слажено и параллельно работать над каким-то программным продуктом.

Представьте что вы пишите программу и у вас есть какая-то функция, которая допустим сохраняет информацию информацию о пользователе в базу данных, и для этого сохранения вам естественно нужна логика которая собственно это сохранение будет делать. Вот вы написали код, все круто все работает. Как сделать своего рода сохранение как в компьютерной игре которое сможет зафиксировать прогресс?

Git — это как раз такая программа, такая система, которая позволяет эти сохранения создавать и потом управлять ими, менять, возвращаться к ним, удалять и переписывать их, такая фиксация в терминах Git-а называется `commit`

Проще всего гит представлять по аналогии либо с компьютерной игрой и ее сохранениями либо с таким роботом-фотографом, который в любой момент который вы ему скажете сделает так сказать фотографию ваших файлов с которыми вы работаете, зафиксирует их состояние на текущий момент, и затем любой момент может вам сказать поменялось ли что-то в этих файлов с момента прошлой «фиксации».

Git собственно так и делает, вы говорите ему команду, он запоминает состояние ваших файлов на текущий момент присваивая ему специальный номер вот это снимка, там называемый `commit hash`.

Commit hash — набор символов которые уникально идентифицируют сохранение состояния файлов в конкретный момент времени;

Что такое ветки в гите и как их использовать?
В git также используется так называемая система веток, представьте себе что ветка, так называемая branch — это маршрут по которому едет поезд, а каждая его остановка, сохранение состояния это коммит. То есть когда мы начинаем разрабатывать какую-то задачу, пишем код нам нужно идти с точки А в точку Б, у нас скажем пустой файл, а потом постепенно наш код начинает эволюционировать и он со временем начинает что-то внятное делать.

Так вот этот процесс разработки можно представить по той же аналогии с поездом, поездвыезжает с точки А и ему нужно доехать до точки Б, и этот маршрут он будет ехать по своему пути (в нашем случае это и будет ветка нашего git), а также по пути ему надо останавливаться чтобы фиксировать свой прогресс по маршруту, это и будут коммиты в нашем случае, то есть мы пишем код в рамках ветки и делаем коммиты, для того чтобы сохранять наш прогресс внутри метки.

Как его используют команды?
Как такой подход позволяет нам распараллелить работу разных людей и команд и сделать их более продуктивными? Все дело в том что когда мы работаем над каким-то проектом и нескольоко людей пишут код они во 1 могут одновременно менять одни и те же файлы.

Так вот фишка гита в том что каждый разработчик может сам себе создать такую ветку, уникальный маршрут поезда на пути которого будут свои уникальные остановки, то есть свои уникальные коммиты этого разработчика, и эта ветка она будет скажем так принадлежать одному человеку и там он будет фиксировать все свои изменения, делать коммиты.

И все сводится к достаточно простой логике, у нас есть какой-то код который нам надо написать, мы сделали новую ветку, по пути того как мы разрабатываем мы в этом ветке делаем коммиты чтобы зафиксировать изменения, как только мы понимаем что у нас все готово, нам нужно объединится с другими разработчиками, скажем так сделать так чтобы наши изменения ехали по общему маршруту, то мы просто сливаем все наши коммиты из нашей ветки в общую. По аналогии с поездами можно представить что у нас есть какая-то главный поездной маршрут в котором есть все наши остановки, коммиты из всех веток. Таким образом все довольно просто, сделали ветку, написали код попутно фиксируя изменения коммитами, после того как закончили, слили все наши изменения в общую ветку чтобы эти коммиты, эти изменения были доступны всем другим разработчикам.

00:00 Начало
1:03 — Git — что это?
2:52 — Что такое Git commit
4:09 — Ветки или «branch» что это такое?
5:27 — Как команды используют Git?
7:49 — Как применять Git в работе. Практика.
7:57 — Новый репозиторий. (Git init)
9:17 — Создание файла и коммита. (Git commit)
11:46 — Сохранение файлов (Git commit -m)
12:46 — Как работают с ветками и какими они бывают.
14:51 — Создание develop ветки, и ветки для работы ( Git checkout -b feature)
17:06 — Как новый файл добавляется в Git
19:39 — Откат к коммиту (Git reset)
20:44 — Слив на одну ветку (Git merge)

Соцсети:
www.instagram.com/itwithvitaly/
www.facebook.com/itwithvitaly

#примерыИзПрактики #обучениеIT #становимсяПрограммистами

Техника тайм-менеджмента для всех кто обучается в IT. Как привести дела в порядок (реальные примеры)


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

Программы для заметок:
todoist.com/
www.notion.so/
bear.app/
culturedcode.com/things/

У меня много лет стоял вопрос того как можно структурировать свою жизнь, чтобы оставаться максимально продуктивным и выполнять максимальное количество задач в свое рабоче или свободное время. Кучу разных способов попробовал начиная от таких штук как Pomodoro когда рабочий день делится на 25 рабочие отрезки и 10 минутный отдых, таким образом достигая максимальной концентрации и заканчивая расписыванием своего жизненного плана на 3-6 месяцев.

Это на самом так сложно, потому что ежедневном меняются какие-то обстоятельства и очень сложно быть роботом который ежедневно выполняет одни и теже функции.

Хочу вам рассказать об одном очень крутом способе повышения своей личной эффективности и фокуса, а также он довольно классно снижает уровень стресса, потому что ненужно держать все мысли в голове.

Этот способ я увидел и тут же начал применять когда прочитал книгу которая называется «Getting things done» ее написал David Allen, американец который профессионально занимается тайм менеджментом и личной эффективностью и книга реально очень крутая, всем рекомендую.

Так вот, что же это такое и почему это так сильно помогает в обучении и в личной жизни, а это по сути просто набор простых правил о том как управлять своими задачами которые приходят ежедневно, сохраняя максимальную концентрацию.

*Создание задач и то когда это делать и как*

Вообще самый основополагающий принцип для того чтобы начать использовать ГДТ в своих каких-то ежедневных задач или того чтобы правильно использовать этот инструмент нужно найти для себя инструмент, который позволяет очень быстро сохранить любую входящую задачу.

Задача может быть абсолютно любая может которая связана вашим бытовыми вопросами это может быть задача что-то выучить новое например выучить какой-то новый фреймворк или технологию попробовать написать какую-то частичку кода решить какую-то задачу в общем абсолютно любые действие которые приходит вам на ум должны. Ключевое здесь то, чтобы вы эту задачу смогли максимально быстро записать и убрать из эту мысль из своей головы.

Наш мозг он очень хорошо обрабатывает информацию и очень плохо её сохраняет особенно сейчас когда куча разных отвлечений. Поэтому первое что вы должны сделать это найти для себя инструмент который будет комфортный для вас для сохранения задач.
Я использую Todoist, эта программа как раз таки которая позволяет сохранять быстро различные задачи, добавлять пометки к этим задачам, а главное делать это в любой момент.

Вот это самый сложны этап, привыкнуть в тому чтобы все добавлять в ежедневник.

*Добавление различных контекстов для задач*

Cледующий пункт когда мы добавляем задачу, очень важно определить для нее контекст. Контекст это по сути то, где и когда мы эту задачу можем решить. Например если я вдруг вспомнил что я хочу поговорить со своим менеджеров о подписке на какой-то платный софт, то я могу это сделать только на работе, соответственно я добавляю пометку что эту задачу я буду решать на работе в рабочее время.
Контекст задачи позволяет нам сразу за секунду понимать что я могу делать в конкретный момент времени. Например если вы добираетесь на работу на метро и у вас есть полчаса времени, вы можете добавить контекст в_метро и добавлять например задачи по прочтению какой-то статьи или видео в момент когда вы будете в метро.

*Добавление фильтров*
После того как мы добавили наши задачи нам нужно каким-то образом добавить фильтрация по всем добавленным задачам, чтобы я мог быстро найти задачу которую я буду делать следующей.

Для этого я сделал еще один контекст помимо основных, который называется next это по сути срез задач которые я буду выполнять следующими. Т.е. у меня например может быть с 10ток задач at_business где хранится весь список того что я например хочу выучить или попробовать, но у меня будет только 1-2 задачи next.
Я спрашиваю себя где я сейчас нахожусь и задачи из какого контекста я могу сделать, пускай это будет at_business, тогда следующим что я делаю это смотрю на задачи с пометкой некс, и я сразу знаю к какой задаче мне приступить.

00:00 — Начало
0:34 — Продуктивность в современном мире
1:33 — Мой опыт в тайм менеджменте
3:18 — Мой рабочий способ. Что такое GTD?
4:32 — Фиксирование задач
7:23 — Что такое контекст для задач?
10:53 — Первостепенные задачи
13:55 — Deadline и повторяющиеся задачи в системе GTD

Соцсети:
www.instagram.com/itwithvitaly/
www.facebook.com/itwithvitaly

#какФокусироваться #какОбучатьсяБыстрее #таймМенеджмент

[Ответы] Java Junior реальное собеседование | ООП, Java Core | Часть1


В этом видео я дам ответы на вопросы из первой части видео с реального собеседования на Junior Java Developer.

Видео с собеседованием: www.youtube.com/watch?v=bH3DBnxO4FA

Надеюсь каждому из вас будет полезно послушать информативную часть, а также взять себе на заметку, как примерно нужно отвечать на собеседовании.

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

Друзья! Напишите в комментариях какого формата видео вы хотите видеть на этом канале! Постараюсь учесть мнение каждого!

Ссылки на соц. сети:

Facebook — www.facebook.com/cactusprogramming/
Instagram — www.instagram.com/cactusprogramming/
Website — cactusprogramming.com/

Kubernetes для тех, кому за 30 / Николай Сивко (okmeter.io)


Приглашаем на DevOpsConf live! — профессиональную конференцию по интеграции процессов разработки, тестирования и эксплуатации
29 -30 сентября и 6-7 октября 2020
Подробности и билеты bit.ly/2NGn8Tt
— DevOpsConf Russia 2018

Тезисы и презентация:
devopsconf.io/moscow/2018/abstracts/4005

Про kubernetes сейчас говорят часто, громко и восхищенно.

Мы в okmeter.io в какой-то момент поняли, что нам тоже нужен k8s в production, хотя у нас нет даже CI/CD, но есть задача делить общий пул серверов между приложениями и достаточно легко добавлять мощности в кластер. При этом был ряд обстоятельств, которые усложняли внедрение k8s:
* мы очень заботимся об отказоустойчивости (мы не притаскиваем новые технологии в prod, пока не разберемся в них на достаточном уровне);
* у нас есть сервисы со временем ответа меньше 10ms;
* у нас очень мало человеческих ресурсов на эту задачу (узнать 10 новых терминов ОК, 50 — уже нет).

— Нашли ошибку в видео? Пишите нам на support@ontico.ru

Как я зарабатывал 500к в месяц на JavaScript


Мой Курс Продвинутый JavaScript: clc.to/senior

Мои Udemy Курсы:
Angular 9: clc.to/angular
React Native: clc.to/rnative
ReactJS: clc.to/react
NodeJS: clc.to/nodejs
Angular Fullstack (MEAN): clc.to/fullstack

Подписывайся на соц сети:
Telegram: t.me/js_by_vladilen
Instagram: www.instagram.com/vladilen.minin
VK: vk.com/vladilen.minin
Группа VK: vk.com/js_by_vladilen

Основные моменты:
00:00 О чем ролик?
02:00 Университет
08:20 Начало работы
10:47 Первое приложение
16:35 Работа в стартапе
20:16 Работа в EPAM
26:30 Как начал создавать курсы
30:25 Как стал Senior
32:08 Работа в аутсорсе как ИП
37:14 Как пришел к Youtube
42:35 Выводы

#владилен #минин

Модель и стек протоколов TCP/IP | Курс "Компьютерные сети"


Стек протоколов TCP/IP и эталонная модель организации сетей на его основе. Лекции по курсу «Компьютерные сети» — goo.gl/0aIOuf
Страница курса — www.asozykin.ru/courses/networks_online

Модель TCP/IP – одна из двух эталонных моделей организации сетей, которые популярны в настоящее время. Это фактический (de facto) стандарт на основе стека протоколов TCP/IP. Модель TCP/IP описывает, как нужно строить сети на основе разных технологий, чтобы в них работал стек TCP/IP.

Модель содержит 4 уровня:
— Сетевых интерфейсов
— Интернет
— Транспортный
— Прикладной

По назначению уровни похожи на уровни модели взаимодействия открытых систем ISO OSI.
Уровень сетевых интерфейсов обеспечивает интеграцию стека TCP/IP с существующими сетевыми технологиями Ethernet, Wi-Fi и др. Уровень интернет (аналог сетевого уровня OSI) нужен для объединения сетей, построенных на основе разных сетевых технологий, и поиска маршрута в крупной составной сети. Транспортный уровень, как и в модели OSI, обеспечивает связь между процессами на разных компьютерах сети.

В прикладном уровне модели TCP/IP сочетаются функции уровней сеансового, представления и прикладного модели OSI. Считается, что если приложению TCP/IP нужны возможности сеансового уровня, или уровня представления, то оно должно самостоятельно их реализовать.

Стек протоколов TCP/IP – наиболее популярный набор сетевых протоколов в настоящее время. Он является основой интернет и широко используется.

Лекция «Основы организации компьютерных сетей» youtu.be/EPvxn9KvBvs
Лекция «Модель взаимодействия открытых систем (ISO OSI)»
youtu.be/1eiBNM6MpqM

Практические занятия по курсу «Компьютерные сети»
goo.gl/YP3l83

Мой канал с краткими и понятными объяснениями сложных тем в ИТ и компьютерных науках:
goo.gl/kW93MA

Справедливость: Лекция #2. Цена жизни [Гарвард]


Поддержать выход лекций: vk.cc/a1SsBy

Добро пожаловать на курс «Справедливость» в озвучке Vert Dider!

Вторая лекция курса посвящена более глубокому изучению идей утилитаризма и попытками применить его к проблемам реальной жизни.

Профессор Майкл Сэндел обсуждает со студентами пути решения моральных и этических проблем, предложенных Иеремией Бентамом и Джоном Стюартом Миллем. Поднимается вопросы о том, как можно оценить «общее благо», если для каждого оно свое, существует ли разница между «высоким» и «низким» удовольствием и как преждевременная смерть от курения может быть полезна с утилитарной точки зрения.

«Справедливость» — самый популярный курс Гарвардского университета, первую лекцию посмотрели уже более 10 миллионов человек. Он посвящен вопросам морали, этики и политической философии. Профессор Майкл Сэндел на реальных примерах из судебной практики, истории и собственной жизни предлагает обсудить актуальные вопросы общества с точки зрения представлений о справедливости в прошлом и исходя из современных концепций. В часовых видео речь пойдет об аргументах за и против равенства, о распределении благ, роли рынка, правах человека и о многом другом.

Источник: youtu.be/0O2Rq4HJBxw

Основы Linux: командная строка


Основной синтаксис команд
* Ключи, опции, модификаторы
* Аргументы
* man-нотация

Управляющие символы: ^C, ^D, ^W, ^Z и другие

Переменные окружения: PATH, PS1, LANG и другие

Конфигурационные dot-файлы: .profile .bashrc и другие

Об этом и о многом другом см. books.google.ru/books?isbn=5977535805