И снова привет!
На этой неделе произошло много всего примечательного, так что я даже не знаю, с чего начать в первую очередь.
Главная новость — я приобрел свой первый в жизни собственный домен, поэтому теперь у этого блога есть более простой и запоминающийся адрес: joisadler.me (Кстати, если кто ещё не знает, “joisadler” — это всего лишь сокращение от моего полного имени в английском варианте: Joseph Isaac Adler, так что на самом деле всё просто и никакой магии :). Правда, пришлось немного повозиться для того, чтобы всё правильно настроить на GoDaddy и на гитхабе, ведь со всем этим я сталкиваюсь впервые. Также довольно много времени ушло на то, чтобы понять, куда внезапно пропали все старые комментарии из Disqus, но теперь все трудности уже позади и, вроде как, всё работает так, как и должно.
Кроме того, теперь я уже совсем до конца русифицировал все разделы сайта (больше всего пришлось повозиться с русскими датами в постах), а также добавил RSS, точнее, оказывается, rss-файл уже был на сайте и необходимо было только вставить в меню ссылку на него для того, чтобы об его существовании могли узнать все остальные). Также, по просьбе одного из читателей добавил в конец каждого поста навигационные ссылки на предыдущий и следующий пост. Эта идея, на самом деле, давно сидела у меня в голове, но руки как-то не доходили. Но когда, наконец, взялся за это дело, оказалось, что сделать это проще простого, если только имеешь достаточно хорошо прокачанные google-skills :)
Теперь насчет учёбы. На этой неделе моей задачей было разобраться в основах работы сетей передачи данных, другими словами: понять то, каким образом компьютеры взаимодействуют между собой. Я понял, что означают все эти страшные слова наподобие HTTP, TCP/IP, OSI, DNS, порты, сетевые интерфейсы и т. п. На самом деле, не всё так страшно, как кажется на первый взгляд.
Протокол - это всего лишь набор правил, согласно которым две совершенно разные машины могут обмениваться данными и понимать друг друга. Поскольку в подобном “общении” есть множество этапов и на каждом из них присутствуют свои правила, мы говорим, что есть не один единственный свод правил или протокол, а целый стек протоколов: каждый для своего отдельного случая.
Вся эта модель взаимодействия между компьютерами называется OSI
(The Open Systems Interconnection model) и согласно ей информация, будучи передаваемой с одного компьютера на другой, проходит через 7 различных уровней: от уровня приложений до физического уровня, на котором уже происходит, собственно, пересылка этой информации по обычному металлическому проводу (ну или по воздуху, неважно) на другую сторону, где принятая информация проходит по всем тем же уровням, только в обратном порядке, пока не добирается до нужного приложения, например, браузера. При этом на каждом новом уровне наша информация обрастает, как матрешка, разными данными, которые требуются для корректной работы разных протоколов, действующих на разных уровнях. Попадая на другую сторону, вся эта матрешка декапсулируется, то бишь разбирается по слоям на каждом уровне, и в итоге, доходит до программы-адресата точно в таком же первозданном виде, в каком и отправлялась.

Вся эта 7-уровневая громоздкая абстракция может показаться достаточно сложной для восприятия, поэтому впоследствии была представлена новая модель сетевого взаимодействия - DOD
, состоящая всего из четырех уровней, каждый из которых примерно соответствует одному из уровней модели OSI
. Именно на этой модели основывается современный набор протоколов TCP/IP
.

Как видите, в общем и целом, если не вдаваться в детали, то всё довольно просто. Конечно, всё, что я только что написал, не претендует на то, чтобы быть истиной в последней инстанции. Это просто моё собственное общее видение, так что поправьте меня, если что-то не правильно.
Для того, чтобы во всём этом разобраться, я начал со старой, доброй Википедии. Просто открыл статью про Интернет, ну и далее — по голубому тексту, попутно проясняя для себя непонятные моменты и термины.
Также мне посоветовали просмотреть небольшой курс по TCP/IP на Pluralsight. Даже моих знаний английского, в принципе, хватило для того, чтобы понять большинство объяснений, тем более, что есть возможность подключить субтитры (но не советую включать автоматический перевод субтитров на русский — это только мешает и запутывает, отвлекая от сути). Целиком я этот курс так и не досмотрел, поскольку там было довольно много вещей, которые ко мне сейчас не сильно относятся, но по крайней мере пару начальных модулей действительно полезны для общего понимания темы.
Кстати, вот здесь подробно описан способ, при помощи которого можно получить бесплатный доступ к любым курсам на Pluralsight в течении трёх месяцев.
Еще одно довольно неплохое видео на тему модели OSI и стека протоколов TCP/IP на канале GeekBrains, тоже советую посмотреть (лучше сразу увеличьте скорость воспроизведения до 1,5x). Опять же, на данный момент для меня оказалась полезной только первая часть видео.
И наконец, еще одна видеолекция с YouTube, которая по содержанию, в принципе, может заменить всё, что я уже упомянул выше. Чувак очень интересно и содержательно рассказывает об основах Интернета, протоколах и всём остальном, что связано с этой темой. Начинать смотреть с 24 минуты, т. к. до этого обсуждаются чисто организационные моменты. Советую в первую очередь смотреть именно это видео, а предыдущие ссылки не убираю просто потому, что жалко удалять то, на что уже потратил столько времени. Может, кому-нибудь тоже пригодится.
Кстати, да)) Во время поисков информации по сабжу, я наткнулся на вот такую интересную книжонку, описывающую в общих словах что такое Интернет, как он работает и его современные возможности. Также книжка содержит некоторые полезные советы по работе с браузером. Конечно, ничего нового я оттуда не узнал, но сам формат, оформление и содержание показались мне такими милыми, что я просто не смог оторваться и прочитал ее одним махом) Ну и чувствую, что просто не могу не поделиться этой находкой со всеми остальными. Если вдруг ваши родители заинтересуются темой Интернета — обязательно дайте им почитать :)
Вот еще некоторые ссылки из тех, что успел сохранить, которые помогли лично мне немного разобраться в темах, обозначенных Кириллом как важные:
- Сетевые интерфейсы: раз.
- loopback: раз, два, (три :).
- NAT: раз.
- HTTP: раз, два, три, и курс на Хекслете.
- Сокеты: раз.
- и еще некоторые ссылки: раз, два.
В общем, как видите, за несколько дней мне пришлось переварить и освоить достаточно много новой информации. Не могу сказать, что прямо таки сходу всё понял: для того, чтобы всё более-менее структурировалось и отложилось в голове, должно пройти какое-то время. Но какая-то общая картина всё-таки начинает прорисовываться. Ну а далее меня ждёт еще множество заданий от Кирилла, благодаря которым я смогу углубить свои познания, а также применить их на практике.
Кстати, недавно Кирилл познакомил меня с ещё одним важным и полезным инструментом: сервисом Trello. Trello — это приложение для управления проектами по методу “канбан”. Идея состоит в том, что для разных задач: как для личных (типа сходить в магазин), так и для настоящих командных проектов создаются доски, на которые вешаются списки (например: “сделать”, “в процессе”, “уже сделано”). В эти списки можно добавлять карточки с отдельными задачами, причем, если к доске имеют доступ несколько человек, то все они могут наблюдать за процессом и принимать в нем участие. По мере работы над проектом, карточки можно редактировать и изменять разнообразными способами, перемещать между списками, в общем, делать с ними всё, что угодно. Главная идея здесь в том, что весь процесс разработки является прозрачным для всех членов команды и в любой момент времени каждый участник может узнать: на каком этапе развития сейчас находится проект. Сервис имеет как очень удобный веб-интерфейс, так и приложения для Android и iOS, что тоже очень удобно. В общем, всем настойчиво рекомендую немедленно разобраться и начать пользоваться).
Собственно, теперь все задания от Кирилла будут поступать ко мне именно через Trello. Во-первых, это поможет мне самому намного лучше организовать учебу и разгрузить собственную оперативную память. Ведь зачем загружать голову задачами, над которыми не работаешь прямо сейчас, если можно сохранить их на внешнем носителе до тех пор, пока до них не дойдет очередь. Во-вторых, таким образом Кирилл в любой момент сможет проконтролировать на каком этапе я нахожусь и своевременно подкидывать мне новые задачи. Ну и в третьих, если расшарить мою учебную доску для публичного просмотра, то у всех читателей этого блога появится возможность также следить за моим продвижением в самом, что ни на есть реальном времени и повторять уже пройденные мною шаги. В общем, будем пробовать, думаю, эта штука мне реально во многом поможет.
Наверно, на этом всё. Эту статью я сейчас по-геройски пишу после ночной смены, хотя глаза слипаются и голова совсем уже не варит, но важно укладываться в сроки. Раз уж я решил, что публикую свои посты по понедельникам, то нужно придерживаться намеченного плана. Если, вдруг найдете в тексте какие-то ошибки или неточности, то отпишите в комментариях и я обязательно на свежую голову всё исправлю. Ну а пока что, мне — спокойной ночи, а вам, дорогие читатели, — удачного дня и хорошей недели.