95 Matching Annotations
  1. Last 7 days
    1. В каких задачах мо

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

    1. b000_0011;

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

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

    1. мы получили

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

    2. битами, которые мы получили

      то есть мы знаем контрольные биты

    3. Вычисление контрольных бит

      Далее находим все биты, который контролирует контрольный бит. а он контролирует каждый N бит интервалом в N. где N - это номер (индекс, но с 0, а 1) самого бита. и суммируем все биты. и если в итоге в сумма чётное число, то ставим 0. иначе 1. здесь просто используется бит чётности

    1. 0 ДЕВУШ

      Долго лучше не общатся в соц сетях. если есть симпатия после нескольких смс. приглашай погулять максимум на завтра

  2. Jun 2024
    1. Directed

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

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

      последняя вершина не имеет ребра для перехода в другую вершину.

      а еще topsort могут быть разными, здесь можно добавить цвета, для понятие, которые уже посещены

    1. LRU

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

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

    2. Мы

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

    1. арбитр

      Кароче, используется как в nginx. там тоже есть два вида процессов worker и master. в данном случае это master - он меняет какая бд с mongo будет основной, а на какие будут работать как реплики (копий с теми же данными внутри) так же как nginx master работает с worker процессом. ну только удаляет или создаёт

    1. Абстракция

      то есть, по сути, есть какие-то кнопочки, они что-то делают,

      а что уже делают зависит от реализаций, которая внутри них заложена,

      что делает интерфейс абсолютно независимым, от реализаций.

    1. ПОЛНАЯ

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

  3. May 2024
    1. Почитай

      на 7:01 она прям поняли, что зрители могли её не правильно понять, и сразу подхватилась объяснять. это прям видно на эмоциональном уровне, она прям резко почувствовала эту эмоцию

    1. 3.2. Установление P2P сессий

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

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

    2. Сервер обратной связи

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

      первый от отправляет в udp пакете, второй получает от из самого запроса (sourse).

    3. Ретрансляция

      База, можно уже и VPN установить на сервер)) больше для аналогий, чем для смысла))

    4. Исходящий NAT

      По сути, как раз это и мешает peer-to-peer, два хоста из разных NAT не могут подключится к друг другу, по причине, того, что NAT (модем) защищает внутри себя ip хостов, к которому хочет подключится другой хост. то есть прямого подключение просто нету.

      а сам NAT может пропускать, только уже созданные соединения.

    1. overcome

      so multiplexing creates multiple virtual connections, within a single connection, now within one connection, can work more one application or protocol, it deletes bottleneck, and makes scaleble. other app or protocols think that they the only ones on running on that connetion

    2. libp2p

      when using single stream has several problem 1. can't use several application at once, if app is using stream others have wait

  4. docs.libp2p.io docs.libp2p.io
    1. /ip4/192.0.2.0/udp/65432/quic-v1/

      likely multiaddr

    2. To

      each peer has a self-signed certificate, this ceritificate they sing a their private key, which is located on their system

    3. Head

      if one packet is lost the next packet cannot will be sent. until first packer is received.

    4. QUIC

      firstly, QUIC uses the UDP, protocol. if a packet is lost, QUIC takes resposablity for it. QUIC repars itself. secondly, quic exposes multiple stream, unlike tcp which exposes a single steam. therefore, at the application layer, there is no need for a multiplexer

    5. A single QUIC packet can carry frame

      a single QUIC packet carring data for one or more streams. QUIC solves HoL blocking, since it works with UPD protocol (allowing packets to be received out of order)

    6. TLS

      TLS establishs an encrypted and auth connection it runs on top of tcp.

    7. Ossification

      the headers of tcp packets are unencrypted. therefore, when a packet pass throuth other server, server can inspect it, if any field in header has a strange value. server may can reject the packect based of those fieds

    1. Грабим Дома

      по сути, ходьба по лестнице (либо число фибоначи), но отличие в том, что в ходьбе по лестнице мы делали сумму прошлого элемента и позапрошлого. (dp[i-1] + dp[i-2]) а в этой задаче. мы берём либо значение прошолого элемента и всё (di[i - 1]). либо сумма настоящего элемента и позапрошлолго (dp[i] + dp[i-2]).

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

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

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

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

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

    2. типаж-объекто

      по сути. типаж-объект, это тот самый интерфейс. он даёт нам возможность, иметь не с опрелёленным типом. если бы мы использовали Where T: type. что объективности даст мономорфизацию. а с теми типами, которые реализуют в себе этот типаж. по сути, мы начинаем работать с типами не на прямую через тип, а через типаж-объект, что по сути может считатся эквавалентом интерфесов, либо абстракт класса.

    1. NetworkBehaviour,

      this behavior beetween peer, how them will talk to each oher

    2. Nodes identify each other via their PeerId which is derived from their public key.

      we created PeerId by publicKey

    1. Метод Wait()

      Wait - просто заставляет поток ждать когда асинхронная операция выполнится, в случае async await поток переходит на другие задачи, а в случае метода Wait() поток другие задачи не выполняет и просто ждёт когда асинхронная операция выполнится.

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

    2. Метод OnCompleted()

      OnCompleted - просто ждёт когда асинхронная операция выполнится, и как только выполнится выполнит внутри себя другую операцию, сам он принимает в себе Action

    1. o store a value, a mapping of the form key -> value is created in the DHT. For every key, an ID is generated by using the same format as peer IDs. Remember that having an ID for every key in the same format as peer IDs means that we can calculate distances between key IDs and peer IDs.

      One formate hash and for peer and for key

    2. peer keeps

      node have list other nodes, which closer to it. it need to find clode node, for key.

    3. Introduction

      DHT is like a table with data of pc to connect them.

    4. distance(key1, peer9) = 4

      we find distance beetween key1 and peer9. where key1 is data which store in other peer, or this

    1. День, когда Нью-Йорк

      Дэвид Берковиц 31 июля 1977 года последние жертвы.

      так же 1977 пропал весь свет в нью йорке

    1. Получив

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

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

    2. Рабочие процессы

      Рабочие процессы - это как раз те самые процессы который выполняют обработку запросов (worker_processes)

    1. После Рима

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

      1066 король англий умер и королём стал Гарольд. но это фейк.

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

    1. Покоряя Дракона

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

      всё просто wireguard создаст по верх одного запроса у которого адресс получателя это ip из вирутального интерфейса. второй запрос, в котором ip будет уже из интернета (допустим ip сервера).

      и когда пакет с данными попадёт на сервер, wireguard внешний запрос уберёт, и оставит пакет, в котором ip от виртуального интерфейса.

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

    1. Американский Задрот

      начало в конце декабря 1968 год : убили подросток на дороге. скорее всего была влюблённая пара.

      через пол года в июле 1969 убили еще одну парочку.


      и через 3 недели. 1 августа пришло письмо в 3 журнала


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


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


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

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


      одно из его писем расшифровали только 2020 года.


      а есть вероятность, что первое убийство было в 1966.


      всегда убивал разным оружием


      так и не нашли его кароче, вообще.

  5. Apr 2024
    1. отличие от других типов пиринга, веерные соединения являются однонаправленными; они всегда указывают с узла вне темы на узел, подписанный на тему.

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

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

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

    2. Сплетни

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

    1. Теперь

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

    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. Почему в этой стране живут почти одни мужчины?

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

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

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

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

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

    1. Затенение

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

    2. mut

      как удобно

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

      Ваще прикол

  7. Feb 2024