Что такое 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? (примеры из опыта)


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

Краткая история моего изучения

Я вам уже рассказывал что я на свою первую работу попал через практику в IT компании, и вот в чем дело, на момент когда я попал на практику я довольно хорошо знал Java и все что с этим языком связано, но не технологии. В той компании нужно было сделать 22 лабораторные работы за 2 месяца, 12 из них по Java Core который я знал, а 10 по совершенно новым, незнакомым для меня технологиям, первые 12 я сделал очень быстро, потому что все знал, а дальше начался ад, у меня уровень английского был Beginner и то есть я читаю только с переводчиком, которым криво переводит тех документацию, в общем очень непонятно и это прям очень сильно меня подкасило, потому что столько времени инвестировал в Java а тут оказывается новые технологии, на русском вообще нет нормальной литературы, я не могу толком читать на английском и это сильно затормозило сроки выполнения задания.

Какие требования к Junior к английскому

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

Специфика изучения технического английского

Надо понять также специфику изучения тех английского. Я во время того когда делал лабораторные заметил что очень большое количество слов повторяется в разных источниках, в том числе повторяются фразы, формулировки, а также структура предложения. Все дело в том что технический английский это специфическая достаточно область, в котором есть часто употребляемые слова, особенно что касается тех документации. Их не очень много может 2-5тыс слов, из которых вам нужны где-то 2.5 тысячи.

Как учить слова

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

И тут самое важное, постоянно учить слова которые находятся в этом словаре и которые будут регулярно пополнятся в процессе чтения. Я в то время установил себе планку 20 слов в день, и это не сильно много, едешь на работу 5 слов выучил, на перерыве снова 5 слов или 10 и еще 5 вечером, или например сразу все 20, 20 слов это не так много. И по сути все измеряется на дистанции, 20 слов это не много, но если посчитать за месяц, то если умножить на 30 это будет 500 слов, а если на 5 месяцев, это уже 2500, не просто английских слов, а целенаправленных слов которые реально взять из технической документации.

Специфика грамматики

Тут сразу простой ответ, запишитесь сразу на курсы, 2-3 раза в неделю, желательно чтобы ваша грамматика и то как вы ее учите пересекалась с теми темами и словами которые будете учить из словаря, скажем так нужна грамматика специализировано для IT спецов. Еще важно понимать что не обязательно знать прямо всю грамматику чтобы прокачаться, на самом в большинстве случаев в технической документации используется там 5 времен из 16 возможных.

Разговорный

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

00:00 — Начало
00:41 — моя история изучения английского
3:27 — требования к junior-у по знанию языка
5:10 — специфика изучения технического английского
6:26 — как учить слова?
9:37 — изучение грамматики
11:04 — разговорный английский

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

#какПопастьвIT #английскийДляПрограммиста #важностьАнглийскоговIT

Какие проекты делать начинающему программисту? Как делать? (Пошаговая инструкция)


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

Почему?

Когда вы рассылаете резюме работодателю, особенно если вы новичок или человек с небольшим кол-вом опыта, то работодателю по сути невозможно понять насколько вы хороший или плохой кандидат, ведь он видит вас в первый раз и о вас нет никакого впечатления. Даже если вас позовут на собеседование, то по сути у них будет всего 1-2 часа для того чтобы оценить ваши знания, это не сильно играет вам на руку, так как обычно на популярные языки типа Java, JS, Python около 10-15 человек на 1 место на Junior.

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

Как?

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

Когда?

Лучше всего если проекты будут достаточно свежие, допустим полугодичной давности от момента когда вы собираетесь рассылать свое резюме, чтобы там были новые версии технологий, новые подходы (которые вы сможете нагуглить).

Как именно искать проект? Какой алгоритм?

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

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

3. Создаем репозиторий в github, попутно учим базовые команды Git, создаем каркас проекта и начинаем писать, не забываем соблюдать качество кода и документацию по всему ходу разработки. Чтобы подсмотреть эталонные варианты проектов, советую вам загуглить в таком ключе Ваша Технология Real World appllication Example github.

4. Когда написали проект, его нужно причесать. На проектах есть так называемый файлик README.md который сразу будет высвечиваться в развернутом виде как описание вашего проекта, как только работодатель или любой другой пользователь зайдет на ваш проект на Github. Сделайте так чтобы ваш проект хотелось посмотреть и скачать, напишите классное описание.

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

Подсуммирую, для того чтобы сделать проект себе в портфолио нам нужно:

1. Найти востребованный стек технологий проанализировав вакансии на рынке.
2. Выбрать тематику которая нам нравится, но важно чтобы проект был на слишком большим.
3. Зарегистрироваться и создать репозиторий на github.com, выучить базовые команды git. Прогуглить примеры реальных проектов.
4. Когда написали функционал, причесываем проект, чтобы на него было приятно смотреть.
5. Не забываем про главную мотивацию писать проект, — это в первую очередь инвестирование в себя и улучшение своих профессиональных качеств.

Таймкоды:
00:00 — Начало
00:14 — что такое «pet проекты»?
1:35 — как занять более выгодную позицию, по сравнению с другими кандидатами на должность
1:59 — Github аккаунт. Зачем он нужен?
2:49 — зачем нужны pet проекты?
2:55 — что такое «Stack технологий»
3:41 — какие проекты добавлять к резюме
4:12 — как именно стоит писать pet project? Шаг за шагом.
4:23 — Подбор востребованного стека технологий
5:18 — Выбор тематики
7:21 — Создание репозитория на Github
8:07 — Лайфхак для того, чтобы лучше понять систему написания приложений.
9:42 — Файл-«описание» Вашего проекта
11:42 — Для чего Вы делаете этот проект?
12:45 — Вывод. Что нужно для качественного написания pet проекта?

Соцсети:
www.instagram.com/itwithvitaly/
www.facebook.com/itwithvitaly
#какУстроитьсяПрограммистом #работавIT #какПрокачатьсявIT

Модель и стек протоколов 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

Что такое IP - адрес и можно ли по нему кого-то вычислить?


Что такое IP — адрес? Почему он так выглядит?
В чем разница между статическим и динамическим адресом?
Могут ли вас вычислить по IP?

После просмотра этого видео вы сможете ответить на эти вопросы. Простыми словами рассказываем о технологии.

Keep calm and Merion ❤️
wiki.merionet.ru
wiki.merionet.ru/seti/26/chto-takoe-ip-adres-i-mozhno-li-po-nemu-kogo-to-vychislit

Креатив и анимация:

instagram.com/cine.vibe

#IP #IPадрес #ВычислитьПоIP #СтатическийIP #ДинамическийIP

Усталость, продуктивность и сортирная аналогия (прокрастинация и борьба с ленью)


Недавно мы запустили Марафон по Джедайским техникам, чтобы помочь вам их освоить: links.mnogosdelal.ru/hyls

Детальный разбор и все экспериментальные данные доступны у меня на форуме: forum.mnogosdelal.ru/viewtopic.php?f=15

Как защитить данные от произвола рейдеров и прочих настырных лиц


Разговор о том что такое захват данных и как ему противостоять и пережить с малыми потерями. Если кратко, у вас могут вытащить данные:
воры (с целью наживы или посланные конкурентами);
рейдеры (с целью захвата контроля над всем);
МВД — УБЭП (проверить лицензионность ПО и проч.);
налоговая полиция (с ордером).
С первыми двумя вы имеете право бороться, двум последним обязаны оказывать содействие и не препятствовать.

Утилита strace - отладка и анализ поведения компьютерных программ


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

3. CS50 на русском: Лекция #3 [Гарвард, Основы программирования, осень 2015 год]


Доп. материалы и задачи к лекции — javarush.ru/s/level_1
Весь курс CS50 — javarush.ru/s/course_cs50

printf(«Вышла третья лекция гарвардского курса CS50 на русском!\
»);

Необычный заголовок знаменует конец введения в курс и начало серьезной учёбы. Сложность возрастёт, но это только раззадоривает! И что еще радует: третья лекция такая же увлекательная, примеры — живые, диджей — на месте=). Итак, с чем мы познакомимся:

• Язык программирования C. На примере простейшей программы Дэвид растолкует основные конструкции языка, пользуясь аналогиями с изученными на нулевой неделе «пазлами» Scratch;

• Облачная IDE, в которой мы будем писать программы на C и не только;

• Вот такие штуки: jharvard@ide50:~/workspace $ make hello. Выглядит как заклинание? К концу лекции станет понятно, что к чему. Это одна из команд Linux. Выучим еще парочку необходимых для запуска приложений из командной строки.
И немного интересных фактов о первом программируемом американском компьютере (из тех, что целую комнату занимают), а также о первом обнаруженном баге=).