52 Matching Annotations
  1. Last 7 days
    1. отличие от других типов пиринга, веерные соединения являются однонаправленными; они всегда указывают с узла вне темы на узел, подписанный на тему.

      есть узел x - который создал сообщение на определённую тему. сам он на эту тему не подписан.

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

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

    2. Сплетни

      Каждый пир сплетничает шестью пиром, рандомным, по служебному "каналу". это происходит каждую секунду

    3. Узлы хранят список недавно просмотренных сообщений

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

    4. очно так же, когда пир получает новое сообщение от другого пира, он сохраняет сообщение и пересылает его копию всем другим пирам, к которым он подключен полным соединением:

      и следующий пир(узел), который получил это сообщение делает копию себе и отправляет своим узлам с полным соединением.

    5. которые станут его партнерами с полным соединением по этой теме

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

      все это он понимает, так как со всеми имеет служебную связь.

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

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

    7. Прививка и обрезка

      два узла - могут быть только либо переправлять между собой полные сообщеия, либо только метаданные. но эти узлы могут изменить свой стиль работы. это называется прививка (grafting) - это когда узлы из общение только метадыннаыми переходят в общения с полными сообщениями. и обрезка (pruning)- обратная прививке

    8. Обмен полными сообщениями

      Обычно, так идёт связь не все ко всему, ради оптимизаций трафика, чтоб каждый не отправлял всем данные. у каждого пира может быть 3 связи.

    9. Обмен мета-данными

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

    1. Теперь

      пока могу сказать, что traint играет роль extensions методов c интерфейсами. мы создаём trait, который играет роль интерфейса, и уже под этот трайт реализуем "extentions" логику, для определённого типа.

  2. Apr 2024
    1. Робот пишет сообщение в очередь:

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

    1. архитектура (№10)

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

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

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

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

      по сути

    2. Микросервисная

      либа для реддиса, StackExchangd.Redis

      LRU - чем нужнее, тем меньше шансов на удаления

    1. Обращение по HTTP

      через api gateway - можно делать, те же запросы к backend. условно он уже отыграет роль proxy. он просто перенаправит (forwarding) на другой url

    2. Интеграция с Object Storage

      api gateway - даёт возможность, создавать уже своё api, для взаимодействия со внутреними сервисами yandec cloud

    3. Пример скрипта для данного расширения:

      можно просто через это api gateway, создать запрос к другому сервису. apigateWay можно сказать играет роль swagger, он некоторый слой, который помогает именно отправлять запросы куда-то.

    1. OpenAPI 3.0

      по сути - это спецификая, которая помогает создавать единый стиль restApi. по сути спецификая, как и до этого было написано, удобный элемент для того, чтоб программам, работать с api в написаний документаций

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

      2.

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

      if let - удобна в том случае, когда нужен только один из всех вариантов, enum. остальные он просто будет игнорировать.

    1. Другими словами

      по сути, используя option, мы работатаем с "null" на уровне кода, мы на уровне кода прописывает, может ли этот тип иметь "null" или нет.

      всё написано, так, что просто невозможно, использовать пустое значение.

    2. IpAddrKind::V4

      по сути как ассоциативную функцию

    1. созданная функция

      Кароче, по сути она работает, компонента,

      есть какая-та среда, в которой будет функция, сама среда не знает, ничего про функций, пока не запустить всё.

      по сути как было сказано - это как контайнер, со своим миров, в которым мы впихивает свою функцию

    1. Создание экземпляра структуры из экземпляра другой структуры с помощью синтаксиса обновления структуры

      а еще можем через ...<nameOldData> создать новую структуру но с новыми данными

    2. Использование сокращённой инициализации поля

      можно не писать прописывать всем полям значения, компилятор - это сам сделает на изичиах

    1. или ноду (node)

      можно сказать, что это сервер, где стоит, proxomx

    2. Под — это логический хост.

      можно сказать, что это qemu в proxmox системе

    3. оркестрацией

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

      слабая аналогия - это роутер

    1. fn first_word(s: &String) -> &str { let bytes = s.as_bytes(); for (i, &item) in bytes.iter().enumerate() { if item == b' ' { return &s[0..i]; } } &s[..] }

      так то прикольный код, первый раз такое вижу

    2. enumerate()

      Превращает элементы коллекция в кортеж, где первый элемент - это индекс этого элемента в массиве, а второй сам этот элемент

    1. s1 после создания s2 ; это не сработает:

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

      s1. не будет сущестовать по примеру ниже.

    2. Длина — это объём памяти в байтах, который в настоящее время использует содержимое String

      один байт это 8 бит, то есть 255 возможных значений. сюда как помещятся все эти ackii значения.

    3. Эта группа данных хранится в стеке

      в стеке хранится длина и емкость (можно сказать массива) и ссылка на сам массив.

      в куче же сами символы (если это строка), ибо он не понятно какого размера, и в будущем может менятся

    4. память автоматически возвращается, как только владеющая памятью переменная выходит из области видимости

      как только переменная исчезает из зоны видимости она перестаёт существовать.

    1. Здесь ошибка:

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

      тем самым ссылка будет указавывать хз куда.

    2. Ошибка:

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

    3. и продолжается до последнего использования этой ссылки.

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

    4. не является его владельцем

      по сути ссылка это как есть владелец дома, и те кто в нём прописаны (те кто прописаны это ссылки на дом). по сути те же права, но живой ты или нет, от этого квартира никому другому не уйдёт. квартирой ты можешь пользоваться, но ты ей не владеешь, а только пользуешься

    5. Области неизменяемых ссылок r1 и r2 заканчиваются после println! где они

      здесь компилятор настолько умный, что сам понимает, что r1 и r2 не будут использованы и тем самым не выдаёт ошибку

    6. Рисунок 4-5: диаграмма для &String s, указывающей на String s1

      Ссылка указывает на указатель

    1. качестве переменных,

      переменные можно закинуть в спецификацию

    1. 'counting_up: loop {

      сам по себе loop, в данном примере это не выражение, а только инструкция

    2. loop

      бесконечный цикл

    3. Использование if в инструкции let

      Можно создавать выражение внутри if, и тем самым возвращать значение оттуда и присваивать к переменной

    1. Выражения

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

    1. let a = [3; 5];

      Можно делать такие массивы: в данном случае будет массив первая отвечает элемент, второй за количество [3,3,3,3,3]

    1. Почему в этой стране живут почти одни мужчины?

      Говорит, о том, как много графики с разной статистикой, много говорит о событиях в реальной жизни.

  3. Mar 2024
    1. аналитическом

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

    2. Синтетический

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

    1. Затенение

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

    2. mut

      как удобно

    1. От Стива Клабника и Кэрол Николс, при поддержке других участников сообщества Rust

      Ваще прикол

  4. Feb 2024