LINUX.ORG.RU
ФорумTalks

ACK номер ожидаемого ОКТЕТА к принятию, а не номер ПАКЕТА! Драма в стихах

 , , ,


0

3

ACK номер ожидаемого ОКТЕТА к принятию, а не номер ПАКЕТА! Драма в стихах

Дорогой LOR, я сидел ни кого не трогал читал книгу Network Programming with Go от Adam Woodbeck, раздел №2, а именно Socket Level Programming. Потом переводил параграф на русский язык, писал поэму на тему параграфа и отсылал своему другу с прозвищем «Маэстро Алгоритм» - получал в ответ порцию отборных матов и продолжал дальше.

И тут перечивая свою очередную поэму, и сверясь с книгой я обнаружил страшное. Автор гонит. Читаем:

Страинца 48, Acknowleging Receipt Packages by Using Their Sequnce Number.

For example, if a sender transmits
a bunch of packets with sequence numbers up through 100 but then receives
an ACK from the receiver with sequence number 90, the sender knows it
needs to retransmit packets from sequence numbers 91 to 100.
  1. Sequence Number - это номер следующий сущности готовой к принятию, если ACK Sequence Number = 90 - это значит 89 сущностей успешно принято, готовы принимать 90 сущность. ACK Sequence Number = (Success + 1) где Success это номер того, чего успешно приняли. Следовательно если из 100 отправленных, пришел ACK Seq Num = 90 то успешно пришло 89, и надо переотправлять с 90 по 100; - 11 пакетов.

  2. Cущность то не пакет, а БАЙТ. БАЙТ - 8 битов - ОКТЕТ.

Что делать, господа присяжные заседатели? Коммандовать парадом продолжаю я, но таких косяков я ожидал от лоровцев, но ни как от писателя букв на бумаге в книге.

Теперь ссылки найденные системой Grok.com:

https://datatracker.ietf.org/doc/html/rfc9293#section-3.4-1

 3.4. Sequence Numbers

A fundamental notion in the design is that every octet of data sent over a TCP connection has a sequence number.

Обратите внимание на изящество, байт звется ОКТЕТОМ, так как Байт он быавет разный.

https://datatracker.ietf.org/doc/html/rfc9293?referrer=grok.com#section-3.1-6.8.2

Acknowledgment Number:

    32 bits
If the ACK control bit is set, this field contains the value of the next sequence number the sender of the segment is expecting to receive. Once a connection is established, this is always sent.

Все равно я респектую Adam Woodbeck - книга хорошая. И заставляет задуматься, в принцпе для Go дела нет, все эти механизмы котроля передачи скрыты в реализации. И предоставляется просто интерфейс. Тем не мене ACK - это номер октета, а ни какого не пакета. И вообще TCP это «стриминговая» передча данных, реализуемая в модели не пакетов, а потока сохраняющего последовательнсть окетов.

P.S.

Внимательно вчитываясь в RFC9293, я пришел к выводу, что SNI и ACK похожи на указатели в Си. Или на шаклу линейки: первый сантиметр начинается с 0, а уже с 1 сантиметра начинается 2 сантиметр. Также SNI - указывает ту точку на которой остановились, если 0 - зачит будтем передавать 1 ОКТЕТ. Хотя я оконательно запутался, понятно, что это байты, и понятн что есть два поля в TCP Header которые указывают начиная с какого байта передаем, и какой байт уже приняли. А дальше надо детально разбираться. Сути это не меняет.

У каждго из узлов передачи есть свои числа, и говорить они могут одновремено. Дел полно двигаемся дальше. Adam Woodbeck - правильный пацан, кент в уважухе.

P.P.S.

Стараюсь разбираться: ISN - это то с чего начали (при утановленом SYN флаге, грубо говоря «от балды»). SEQ (Sequence Number) - это поле указывающие какой октет мы сейчас передаем. ACK (Aknowledge Number) - поле которое говорит какой ОКТЕТ мы готовы принять следующим.

  • SYN, ACK - флаги.
  • ISN - первое число, случайное.
  • Sequence Number, Aknowledgment Number - это 32 битные поля в TCP Header в IP пакете.

SEQ_num - Начало какой байт начали передовать. ACK_num - какйо байт ждем, ждем 10 байт (9 приняли), или ждем 20 (19 приняли).

P.P.P.S.

Важно добавить, SEQ_num и ACK_num указывают номера ОКТЕТОВ для TCP сегментов передаваемого и ожидаемого. SEQ_num - указывает байт с которого начинается TCP сегмент, а TCP сегмент икапсулирован в IP пакет.

И это механизмы для формирования непрерывного последовательного потока данных - дублирования потерянных сегментов.

P.P.P.P.S.

Протокол TCP предоставляет услуги поточной передачи данных, через объект Сокет. Последовательность данный при передачи реализована, через механизм сегментов которые содержат порядковые номера ОКТЕТОВ.

Существует два поля при помощи который получатель и отправитель регулируют последовательно отправки и получения сегментов, дублируя - если придется потерянные сегменты данных. Это 32битные поля SEQ_num и ACK_num. SEQ_num это информация от передающей стороны указывающая с какого порядкового номера ОКТЕТА (байта) начинается текущий сегмент. ACK_num это 32 битное поле которое заполняет принимающая сторона указывая какой следующий номер ОКТЕТА она готова принять: Если номер 100, значит 99 уже успешно принято.

Важно что сервер и клиент имеют два независимых друг от друга потока передачи данных и для каждого потока есть свои ACK_num, SEQ_num значения.

В чем я еще путаюсь так это в 0 байте-октете. Но это сути не меняет, а является низкоуровневой реализаций, 0-indexed или 1-indexed - не суть важно так как первое значение SEQ_num заполняется псевдослучайным образом и называется ISN: Initial Sequential Number вестимо.

TCP сегмент данный инкапсулирован в IP пакет и описывается так называемым TCP Header - который содержит флаги и вышеописанные поля SEQ_num и ACK_num - для реализации бесперебойного и последовательного потока данных.

P.P.P.P.P.S.

Дополнение: книга про TCP/IP которую я нашел по поиску картинок в Google. Подозрительно похожа на TCP/IP Illustrated от Kevin R. Fall, W. Richard Stevens - не факт, не проверял.



Последнее исправление: lbvf50txt (всего исправлений: 7)
Ответ на: комментарий от sabacs

Ну т.е. старые системы?

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

slackwarrior ★★★★★
()
Ответ на: комментарий от sabacs

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

ya-betmen ★★★★★
()
Ответ на: комментарий от lbvf50txt

Был такой журнал Компьютерра, и один из авторов был Михаил Ваннах,

Только об нем самом (его авторитетности в ИТ) мало что известно, кроме того что зачем-то его характеризовали «преподобный» в околокомпьютерном еженедельнике. Т.е. важно ли что он священник реформатской церкви в контексте темы про TCP/IP? Крайне сомнительно. Ну, и в «Компьютерре» был он колумнистом, т.е. писал всякую отсебятину типа ЖЖ и лытдыбров. Про вин-чунь и про го он, кстати, ничего не писал.

slackwarrior ★★★★★
()
Последнее исправление: slackwarrior (всего исправлений: 1)
Ответ на: комментарий от lbvf50txt

Оттачиваю поднимание через объяснение.

Поднимание, извините, чего именно?
Каким именно делом можно заниматься на лоре?

imul ★★★★★
()
Ответ на: комментарий от lbvf50txt

В принципе, если кто-то завёл разговор о «макаках», будь то Python, Go, JS, Web - всё пред нами «луддит».

Полная чушь. Луддит - это про другое.

seiken ★★★★★
()
Ответ на: комментарий от seiken

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

seiken ★★★★★
()
Ответ на: комментарий от imul

Поднимание, извините, чего именно?

Во время споров я отстаиваю свою позицию и формирую модель программирования.

  • Сформулировал, что для Маршрутизатора устройства Канального уровня (Коммутаторы, Концентраторы, Мосты) - это те же самые «провода». Или прозрачная инфраструктура.
  • Сформулировал реализацию сетевого стека в Unix, чётко (прежде всего для себя) осознал границу между реализацией протокола и сервисом который протокол предоставляет. Например TCP предоставляет поток данных, а реализуется он через инкапсуляцию сегмета в IP датаграмму и подсчёт отправляемых/ожидаемых байт-октетов через SEQ_num, ACK_num (это 32битные поля из TCP Header).
  • В запале спора прочитал часть Тенабаума, чтоб кому-то, что-то доказать про устройство Микроядра.

Моя модель взаимодействия с LOR: Wing Chun Wooden Dummy. Это суровый тренажер ломающий кисти рук при неправильной технике. Надо нежно, спокойно, технично отрабатывать механику взаимодействия. Если лупить в бревно - то будет травма.

LOR - мне друг и помощник, часть моего тренажерного зала. Чего и всем желаю.

lbvf50txt
() автор топика
Последнее исправление: lbvf50txt (всего исправлений: 1)
Ответ на: комментарий от lbvf50txt

P.S. Только на себя не бери про неспособных писать абзацы, это не о тебе лично, даже и близко не о тебе. Это о «экспертах» на которых не будем показывать пальцем.

Спасибо, а то я сначала было подумал, да.

Zhbert ★★★★★
()
Ответ на: комментарий от lbvf50txt

с самого самого 0 при том на русском-не-казенном

А это вот да, про это я как раз и говорю обычно, когда сам рекомендую почитать его книги. Что основы именно работы пекарни расписаны, и что без них никуда, с чем часто спорят, доказывая, что достаточно пистона,

Zhbert ★★★★★
()
Ответ на: комментарий от seiken

При том, что гошка именно создавалась ради упрощения ЯП.

Это достаточно поверхностное суждение, Go создавалась прежде всего для многопоточного программирования, и в язык были встроены примитивы CSP (Communication Sequental Proecesses) от Tony Hoare.

Изначально Go создавался под решение одной из самых не тривиальных задач в разработке: распараллеливания задачи. А по форумам ходит «веское мнение», что Go - «простой язык».

lbvf50txt
() автор топика
Ответ на: комментарий от Zhbert

Это че это? Там вполне с основ все расписано.

Где-то у Kernighan & Ritchie было написано, что книга это учебник Си, а не учебник программирования. Да и задачи там такие, не хилые на стеки, да на конечные автоматы, что они ну ни как ни для начинающих.

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

lbvf50txt
() автор топика
Ответ на: комментарий от seiken

Это и есть упрощение.

Это несомненно упрощение, но не в том ключе в котором его трактуют на LOR. Go - язык системных инженеров, которые прекрасно шарят в Системном Дизайне, а не как принято с апломбом заявлять «для студентиков, чтоб в синтаксисе не запутались».

Программирование на Go требует достаточно высокого уровня в ООП дизайне: композиции, интерфейсы и так далее. Сразу из стандартной библиотеки с io.Writer и io.Reader.

// Jon Bonder; Learning Go, An Idiomatic Approach
// to a Real-World Go Programming;
// Chapter 11: The Standard Library

type Reader interface {
  Read(p []byte) (n int, err error)
}
type Writer interface {
  Write(p []byte) (n int, err error)
}
type NotHowReaderIsDefined interface {
  Read() (p []byte, err error)
}

Из файла прочитать, а уже надо вводить интерфейс.

lbvf50txt
() автор топика
Последнее исправление: lbvf50txt (всего исправлений: 3)
Ответ на: комментарий от lbvf50txt

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

imul ★★★★★
()
Ответ на: комментарий от lbvf50txt

В запале спора прочитал часть Тенабаума, чтоб кому-то, что-то доказать про устройство Микроядра.

Ты бы лучше сам по себе читал, чем в запале спора. Глядишь и спорить бы меньше тянуло :)

Zhbert ★★★★★
()
Ответ на: комментарий от firkax

А в военное время может достигать и 700.

anc ★★★★★
()
Ответ на: комментарий от imul

Тебе форумные деятели, ломая (твои?) кисти, втолковывают какие-то очевидные вещи.

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

lbvf50txt
() автор топика
Ответ на: комментарий от seiken

Откуда ты знаешь, в каком клю на ЛОР трактуют упрощение?

Из общения.

lbvf50txt
() автор топика
Ответ на: комментарий от Zhbert

Откуда такая информация?

leetcode.com - задача подсчета уровней вложения, открытых/закрытых скобочек это одна из классических соревновательных или собеседовательных задач.

Сейчас спорт ушел далеко вперёд, в принципе это все уже не «соревновательное программирование», а больше «подготовка к собеседованиям». Соревновательное программирование вылилось в «чистый матан».

lbvf50txt
() автор топика
Ответ на: комментарий от imul

втолковывают какие-то очевидные вещи.

Ой, не льстите себе, молодой человек - выдавая себя за мега эксперта. Наложение уровней OSI на реализацию сетевого стека Kernel/Userspace, и механизм устройства TCP сегмента, это далеко не «очевидные вещи». Особенно разделение между реализацией протокола, его услугами, и интерфейсом который предоставляет ОС - артикулировать эти три составляющих одной сущности «протокол» - это далеко не просто, и далеко не очевидно.

От вас я не слышал в этом треде не одного технического комментария, только хмыканье и остроты. Вы ни словом про реалзацию TCP не обмолвились. И естественно, потому, что вы «всё досконально знаете», вот Adam Woodbeck допускает не точности, а вы - нет. Не опускаетесь до объяснения таких мелочей как работа с флагами ACK и SYN, для вас это «очевидные вещи».

P.S. И втолковываю я, а мне пишут «бред», «OSI не нужно», «все есть recv», ну и так далее. А я формулирую, работаю с моделью и создаю точные формулировки.

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

lbvf50txt
() автор топика
Последнее исправление: lbvf50txt (всего исправлений: 5)
Ответ на: комментарий от Zhbert

Ты бы лучше сам по себе читал, чем в запале спора. Глядишь и спорить бы меньше тянуло :)

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

К сожалению на LOR не пытаются понять, а пытаются задеть, унизить, оскорбить. По этому я создал метафору «деревянного бревна» - обезличил агрессивных собеседников. Wing Chun Wooden Dummy - позволяет мне не испытывать агрессии и гнева, прорывается иногда, но по минимуму. Бить в бревно нельзя - поранишся, можно только обрабатывать блоки и атаки при полном самоконтроле.

lbvf50txt
() автор топика
Ответ на: комментарий от lbvf50txt

Соревновательное программирование вылилось в «чистый матан».

Что таще-то логично. Формошлеперов развелось масса, а толку от них... но их много.

anc ★★★★★
()
Ответ на: комментарий от imul

Вот смотри @imul.
-1. Мое слово: Втолковываю область применения Go
0. Что-то говорит забанненый: отфильровано
+1. Мое слово: Оттачиваю через объяснение
+2. Твое вопрос: Что отточил?
+3. Мой ответ: Сети
+4. Твой вопрос: И кто тебе очевидное молотком забивает?

И того цепочка из 6 сообщений и вы потеряли нить разговора. При этом пытаетесь меня задеть, обидеть. Можно на вас обижаться? - вряд ли.

Не лезьте, не будете получать.

lbvf50txt
() автор топика
Последнее исправление: lbvf50txt (всего исправлений: 1)
Ответ на: комментарий от lbvf50txt

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

imul ★★★★★
()
Ответ на: комментарий от lbvf50txt

Дружище, убери линейку, глупо выглядишь. Мне шестой десяток и сети я в универе преподавал. Если ты считаешь, что я тебя обязан чему-то обучать, то пиши, контакты есть в профиле. Возможно в оплате сойдёмся.

От вас я не слышал в этом треде не одного технического комментария, только хмыканье и остроты.

В толксах? Так это техническая тема? Давайте позовём модератора и он снесёт из толксов техническую тему, либо перенесёт в соответствующий раздел.

И втолковываю я, а мне пишут «бред», «OSI не нужно», «все есть recv», ну и так далее. А я формулирую, работаю с моделью и создаю точные формулировки.

Насколько я помню из темы где вы OSI обсуждали, претензии были к уровням 5 и 6.

imul ★★★★★
()
Ответ на: комментарий от lbvf50txt

И того цепочка из 6 сообщений и вы потеряли нить разговора.

Итого.
Какая нить из шести, если я вклинился на +2? Меня удивило, что сравнивается диалог здесь с ломанием рук.

Не лезьте, не будете получать.

Так, что я получил-то? Очередной поехавший головой лоровец воюет с жупелами, а я и не в курсе.

imul ★★★★★
()
Ответ на: комментарий от imul

Меня удивило, что сравнивается диалог здесь с ломанием рук.

Wing Chun Wooden Dummy - это бревно с торчащими палками. Эти палки - воображаемые руки противника. Тренирующийся отрабатывает воздействие на руки и удары в центр бревна. При потере контроля - тренирующийся получает травму. Потому, что удар должен быть нанесет строго «прямо», по нормали, к центру бревна. Если не соблюдать идеальную технику нанесения ударов и блоков - будет получена травма.

Метафора заключается в том, что если терять контроль на LOR, что-то чрезмерно доказывать - поранишся. И есть люди которые слушать не намерены, а намерены выставлять «деревянные палки» опровержений. Следовательно, надо сохранять контроль, спокойствие и работать над техникой объяснений.

lbvf50txt
() автор топика
Последнее исправление: lbvf50txt (всего исправлений: 1)
Ответ на: комментарий от lbvf50txt

Думаешь, что мне надо по два раза одно и то же писать?
Мне смысл метафоры понятен.
Непонятна (была, третий раз писать то же самое не надо) причина применения этой метафоры.

imul ★★★★★
()
Ответ на: комментарий от imul

Моя модель взаимодействия с LOR: Wing Chun Wooden Dummy. Это суровый тренажер ломающий кисти рук при неправильной технике. Надо нежно, спокойно, технично отрабатывать механику взаимодействия. Если лупить в бревно - то будет травма.

Какая нить из шести, если я вклинился на +2? Меня удивило, что сравнивается диалог здесь с ломанием рук.

Вот видите как оно выходит, собеседнику не важны твои метафоры, читает он по диагонали. Уточнения «лупить в бревно», «спокойно отрабатывать технику объяснения» и даже фотография ничего не гарантирует.

Есть красный маркер «ломать кисти рук» - и всё, дальше текст не ухватывается. И это претензия не к вам, а просто наблюдение за тем с какой тщательностью читают тексты в форумах: ВСЕМ ПЛЕВАТЬ.

И это нормально.

lbvf50txt
() автор топика
Ответ на: комментарий от lbvf50txt

Признаю, надо было в кавычки закрыть, а то на лоре обычно с носорогами в грязи борьба идёт.

imul ★★★★★
()
Ответ на: комментарий от imul

Непонятна (была, третий раз писать то же самое не надо) причина применения этой метафоры.

Честно говоря я не нахожу другой метафоры для объяснение получения пользы из общения на LOR. Когда тебе выкатывают абсолютно абсурдные аргументы или не способны понять базовую абстракцию - то ни как кроме как работу с Wooden Dummy это не назвать.

Например, человек просит объяснить разницу между коммутатором и маршрутизатором. Упрощенно объясняешь «коммутатор» - микросхема, «маршрутизатор» - компьютер. Комутатор - воткнул и работает, Маршрутизатор - настраиваешь IP адреса.

Тебе собеседник начинает тулить какую-то дичь про усовершенствованные коммутаторы, или про то, что везде есть контроллеры. Хотя цель объяснять «на пальцах» - вот тут и начинается отработка объяснений. И так слово за слово рождается метафора/модель: «Для маршрутизатора все что ниже L3 - провода».

lbvf50txt
() автор топика
Последнее исправление: lbvf50txt (всего исправлений: 2)
Ответ на: комментарий от imul

Снимаю шляпу, галантно приношу извинения за свою запальчивость и драчливость. Ухожу читать Adam Woodbeck.

картинка

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

lbvf50txt
() автор топика
Последнее исправление: lbvf50txt (всего исправлений: 1)
Ответ на: комментарий от lbvf50txt

слово за слово рождается метафора/модель

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

Zhbert ★★★★★
()
Ответ на: комментарий от Zhbert

Сейчас же доставка везде. Времени достаточно.

imul ★★★★★
()
Ответ на: комментарий от Zhbert

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

Братан, я программист: Создание виртуальных моделей отображающих реальные процессы - моя работа.

lbvf50txt
() автор топика
Ответ на: комментарий от lbvf50txt

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

Эту тему я видел. Как раз в командировке был. Решил в гостинице перед сном ЛОР почитать... Давно так не орал от комментариев. Пару раз там даже рука поднималась что-то написать, но вымотаный был.
Разница же следует из названия. Маршрутизатор - устройство которое умеет раскидывать (чужие) пакеты по разным маршрутам (интерфейсам) в соответствии с правилами. Не умеет - значит не маршрутизатор. Сейчас чётких границ между ними нет, есть прошивки с реализованой функциональностью и там могут быть «оттенки серого» от L2 до L3. Возьми например микротик, как самую доступную и гибкую в этом плане штуку. Можешь его настроить и как тупой свич, а можешь как роутер с кучей протоколов динамической маршрутизации.

imul ★★★★★
()
Ответ на: комментарий от imul

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

  • концентратор - колебания напряжения
  • коммутатор - кадры
  • маршрутизатор - IP датаграммы (в простонародье пакеты)
  • Ядро - до TCP сегментов включительно
  • Userspace - от потока данных и выше

Как улицы в городе кривоваты и петляют, но примерно - эта идет на строго Юг, а эта на Юго-Запад помогает в ориентировании.

lbvf50txt
() автор топика
Последнее исправление: lbvf50txt (всего исправлений: 1)
Ответ на: комментарий от lbvf50txt

Возможно будет сейчас сказ про бычка, и если тема надоела, то можно без подробностей. Если ты не программист системщик (но возможно именно системщик, не следил), а прикладник, то зачем настолько глубоко вникать в особенности реализации сетевых подсистем операционки? Для прикладников даже recv/send часто сликом низкоуровневые вызовы, если не на голом си пишешь. Уже понавернули кучу абстракций поверх.

imul ★★★★★
()
Ответ на: комментарий от imul

Как показала практика, нет разделения на Системщиков и Прикладников, как нет разделения на Гуманитариев и Технарей. С определенного уровня квалификация сливается. Филологи используют мат. модели, технари пишут книги.

Не получается на практике работать без вникание в модель функционирования ОС. Не получается, все хотят, все наедятся, ни у кого не получается.

lbvf50txt
() автор топика
Ответ на: комментарий от lbvf50txt

Не получается на практике работать без вникание в модель функционирования ОС. Не получается, все хотят, все наедятся, ни у кого не получается.

Но ведь вполне получается. Хреново правда, но это другой уже вопрос.

Zhbert ★★★★★
()
Ответ на: комментарий от lbvf50txt

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

imul ★★★★★
()
Последнее исправление: imul (всего исправлений: 1)
Ответ на: комментарий от Zhbert

Но ведь вполне получается. Хреново правда, но это другой уже вопрос.

Смотрите. Объясняю. Есть такая программа Git, с 1000 разных комманд, их можно заучивать, зубрить - толку будет 0.

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

Коммиты указывают на дерево-каталоги, дерево-каталоги содержат таблицу имен и ссылки на блобы.

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

Вот так-же только в 10кратном размере с «прикладной» разработкой.

lbvf50txt
() автор топика
Последнее исправление: lbvf50txt (всего исправлений: 2)
Ответ на: комментарий от Zhbert

После этого появляются ускорители интернета в виде однострочника типа echo unshit > /sys/foo/bar

imul ★★★★★
()
Закрыто добавление комментариев для недавно зарегистрированных пользователей (со score < 50)