- Last 7 days
-
blog.xeynergy.com blog.xeynergy.com
-
destructors are essential for cleaning up unmanaged resources explicitly.
деструктор работает с не управляемыми ресурсами
-
-
stackoverflow.com stackoverflow.com
-
ну я понял, что у меня я мало знаком с потоками, и не знают с чем инфу это соединить
-
-
refactoring.guru refactoring.guru
-
Довольно популярна реализация Посредника при помощи Наблюдателя
Можно засунуть в медиатор разные сущности, а потом вызывать одну из сущностей, и вызывать метод, в котором одно из обязанойстей, ответсвтенностей передать данные остальным сущностям этого медиатора.
и этот метод как раз принимает как аргумент, медиатор, который имеет метод, который и будет отравлять данные всем остальным сущностям, который хранятся в этом медиаторе. замечу, что можно закинуть внутрь аргумента изначального метода другой медиатор.
так вот все эти сущности будут хранить в себе реализацию паттерна наблюдатель. где уже внутри метода медиатора будет проходить foreach по всем элементам и отправка им данных
-
ри этом объект посредника будет выступать издателем, а все остальные компоненты станут
типо посредник становится некоторый смотрителям, который видит, когда что-то проходит через него. и об этом говорит все кому интересно по раций
-
они становятся зависимыми от самого посредник
через него проходят все операция, команды
-
-
refactoring.guru refactoring.guruФасад1
-
Фасад создаёт упрощённый интерфейс к подсистеме, не внося в неё никакой добавочной функциональности. Сама подсистема не знает о существовании Фасада. Классы подсистемы общаются друг с другом напрямую
и в фасаде и в посреднике мы инкапсулируем некоторое взаимодейсвие между разными сущностями. чтоб пользователь, который будет использовать эти сущности не думал о том, как они должны между собой взаимодействовать
-
-
www.youtube.com www.youtube.com
-
так прикольно, что можно использовать, ту атмосферу, которая была придумана и создана в фильмах, можно использовать в реальном мире, как элемент маркейтинга.
чтоб создавать точную связь между событие реального мира с событием из фильма.
например, в фильме кто-то создаёт какую-то гениальную штуку и на этом строится сюжет, типо эти ребята сделали это. эта штука гениальна.
и можно создать что-то в рельном мире и строить свой диалоги тезисы, как будто с атмосферной этого фильма и тем самым достигать тех же эмоциональных основ
-
- Nov 2024
-
www.youtube.com www.youtube.com
-
были 3 группы. 1. была кнопка, но собак не били (им было ваще пофиг на кнопку) 2. была кнопка и она отлюкчала ток, который их бил.(они смело всегда нажимали её носом) 3. была кнопка она отключала ток, но потом перестала работать (после того как перестала её больше не нажимали)
не существующий выученной беспомощности. есть некоторая часть мозга, которая активируется, чтоб остановить нас и ничего не делать. но если мы знаем, что можем, что-то сделать, то это штука подавлется и мы делаем что-то.
кароче говоря, мы всегда желаем что-то сделать, чтоб решить проблему. и ничего не делаем только в том случае если не знаем способа решить проблему
-
-
-
TearDown
его можно воспринимать как постобработчик в rest api запросах
-
-
stepik.org stepik.org
-
A∈A
когда мы говорим про принадлежит, мы говорим, что внутри одного множества есть другое множество. именно внутри. как отдельный элемент множестве.
а когда подмножество в множестве. мы имеет в виду, что все элементы одного множества есть в другом множестве именно как элементы этого множества. а не как элементы множества, которое внутри этого множества
-
Элементы х имеющие только одни и те же свойства. не больше и не меньше. находятся в одном множестве.
-
-
refactoring.guru refactoring.guru
-
Посетитель можно рассматривать как расширенный аналог Команды, который способен работать сразу с несколькими видами получателей.
реально прикол. по сути, паттерн команда, где метод execute как раз принимает посетителя.
допустим там даже просто храняся данные пользователя. тип аунтефикация внутри. и будет вывод команд, который он может выполнить и не может
-
посещаемых типов домов у него имеется особое предложение.
он заходит в дом - это аргумент метода объета. он предлагает товар жителям дома - это он принимает в себя объект
-
Но это простое изменение позволит применять к объектам узлов и другие поведения, ведь классы узлов будут привязаны не к конкретному классу посетителей, а к их общему интерфейсу.
при этом посетителя та разные, и едят все иду по разному. тем самым мы наши объекты полностью независимы от посетителя, ибо внутри метода объекта мы принимает интерфейс.
-
Вместо того, чтобы самим искать нужный метод, мы можем поручить это объектам, которые передаём в параметрах посетителю. А они уже вызовут правильный метод посетителя.
мы через объект даём возможность пользоваться посетителю этим объектом.
все эти объекты работают с одним интерфейсов посетителя.
а сам посетитель принимает в себя разные классы объектов.
это нужно, чтоб нам перед вызовом посетителя не нужно было бы определять какой именно клаа у объекта.
вместо мы просто кидает внутрь объекта посетителя. и внутрь посетителя уже кидает этот объект. таким образом посетитель знает какой класс мы используем, так как вы уже отдаём ему this. то есть тот класс, который и принял этого посетителя
-
Код поведения, скорее всего, должен отличаться для объектов разных классов, поэтому и методов у посетителя должно быть несколько.
и этому посетителю может нужен объект, такой как хлеб или сок. для него этот объект находится в категориях еды, но есть на он это разными способами
-
Объекты, с которыми должно было быть связано поведение, не будут выполнять его самостоятельно. Вместо этого вы будете передавать эти объекты в методы посетителя.
ага то есть, мы как мы отдаём ответсвенность посетителю.
он как бы приходит в магазин и смотрит на объект, который ему нужен и им пользуется.
мы как бы отдаём его ему
-
-
-
Формат
нужно сделать некоторый траслятор разметки.
на вход мы кидаем текст в виде MarkDown а получить уже должны в виду Html.
-
-
-
Экранирование
Экранирование как в c#
-
-
www.youtube.com www.youtube.com
-
Есть некоторая металогика, которая занимается логикой других моделей логик.
да логик так же много как теорий в физики и т.д
-
- Oct 2024
-
www.youtube.com www.youtube.com
-
чувство - это соединение эмоций с мыслями, с некоторой рефлексией.
-
-
refactoring.guru refactoring.guru
-
Директор
он забирает ответственность за постройку. чем-то похож на шаблонный метод.
в данном случае мы создаём директора, который знает лучше всех как строить машину и только дайте ему строителя builder. и он руководя строителям создаст машину
-
-
www.freecodecamp.org www.freecodecamp.org
-
built with the OCP principle in mind
сделать принцип OCP вместо в RCP в том плане, что у каждого изначально одни и те же команды, и каждый может добавлять свой команды. добавление своих без изменений чужих. это OCP вместо с RCP.
когда не изменяя класс можно добавить логику, но при этому есть этот же класс у других пользователей и он так же может меняться по их желанию.
тем самым у каждого свой. и каждый несет за свой данные ответственность
-
encountered
i had encountered you before you ate sandwich.
ecountere is when you go ahead and you see wall. you can't ahead. you encountered wall and turn right then you can find shop.
-
-
refactoring.guru refactoring.guru
-
Декоратор оборачивает только один объект, а узел Компоновщика может иметь много детей. Декоратор добавляет вложенному объекту новую функциональность, а Компоновщик не добавляет ничего нового, но «суммирует» результаты всех своих детей.
Основной прикол декоратора в том, что при использование его мы вкладываем во внутрь объекта один объект и получаем. условно связной список. то есть прямое дерево вниз.
компоновщик же даёт возможность, чтоб к одному компоненту привязывался не один объект а сразу много. тем самым получается сложное дерево.
-
-
www.youtube.com www.youtube.com
-
Философ - это тот кто стремится к мудрости. филео - любовь софия - мудрось.
ксенология - наука о познаний. благодаря ей определяется, что именно истинно, а что ложно.
метафизика - изучение мира и себя
-
-
www.youtube.com www.youtube.com
-
Операционная система - это многокомплексная программа, которая может пользоваться всеми ресурсами устройства, на котором она установлена. она некоторый посредник между пользователем, который хочет что-то делать на этом устройстве, и hardware частью компьютера
-
-
-
а об обычной теплоёмкости - когда конкретное тело.
когда у нас в физическом мире, есть объект, какой-то массы, мы его знает, и тогда можем найти его теплоёмкость
-
-
otvet.mail.ru otvet.mail.ru
-
теплоемкость
вообще какая теплоёмкость у всего объекта
-
Удельная теплоемкость
просто некоторая абстрактная единица измерения
-
-
-
По сути своей — это способность материала получать или отдавать тепло.
это когда кладёшь в морозилку что-то и морозилка играет роль гопника, которая забирает тепло у курицы, например.
-
Излучение
Способ когда тепло идёт волнами, та же микроволновка. то есть прикол в том, что тепло как бы направленно куда-то. тот же свет этот волны и они тёплые.
-
Конвекция
происходит цикл, в котором воздух через источник тепла и тем самым становясь теплее и поднимается вверх. так как теплый воздух легче. в итоге получает некоторый тракт (тропинка)
-
Порой мы немного перебарщиваем с возможностями этого эффекта, когда на пляже ложимся на горячий песок. Эффект есть, только не очень приятный
да когда босиком бежим с горы по доскам, которые до безумия нагретые и ищешь тенёк
-
Тот вид теплопередачи, который можно охарактеризовать, как способность тел проводить энергию от более нагретого тела к менее нагретому
такая махинация есть и в воде, когда есть два стакана и между ними трубачка и если в одном стакане вся вода, то если с одного насчётся листся в другой, то в конечном итоге они будут на одном уровне
-
Нагревание и охлаждение
Охлаждение как и нагревание полностью симметричны
-
-
-
Возможно, у этого элемента есть тонкости, немного отличающие его от функции. Например, значения кэшируются. Но он достаточно похож на функцию!
внутри функцию может быть какая-та еще логика, но сама она не влияет на пользователя, который будет ей пользоваться, то можно не усложнять название функций. пусть она делает то, что ты как разрабочик этой функций хочешь, чтоб другие разрабочики думали об этой функций
-
Добавим слой абстракции, позволяющий реализовать самые популярные возможности, используя меньшее количество концепций.
Нужна писать ту же библиотеку, так чтоб пользователь этой библиотеки вникал в минимальное количество концепций. если можно скрыть некоторые концепты более глубоко, например через абстракцию, то почему бы это не сделать.
в той же моей библиотеке по OAuth2.0 явно можно скрыть базу данных, и сделать какую-нибудь моку по дефолту. а уже тот кому нужно может и сам реализовать паттерн репозиторий
-
- Sep 2024
-
www.youtube.com www.youtube.com
-
10 фактов об отношениях, которые сэкономят нервы и время. я жалею, что не знала этого раньше
-
ожидание о партеры могут быть противоположны, реальности, это нормальная тема. мозг всегда создаёт идеальную личность в голове, это норм тема
-
не всегда оба партера включены в развитие отношений, один может быть уставшим и т.д. когда один не может всегда есть второй, который уберёт эту нехватку.
-
не требую, что другой человек давал тебе больше чем ты даёт себе. зачему, что здесь и не только в отношениях между любви, да и вообще тоже между друзьями и т.д
-
ты моя, но это не значит, что я хочу тебя ограничивать, всегда держать возле себя
-
не подстравить под себя партера, он имеет свой особенности, индивидуальности (Карина про это рассказывала)
-
человек, который любит, может сделать больно, он может это не знать и т.д
-
говори, говори, не мочли, чем больше информация он знает, чем проще будет всем
-
-
-
metanit.com metanit.com
-
Теперь объекты Span firstDecade и lastDecade работают с теми же данными, что и temperaturesSpan, а дополнительно память не выделяется.
по сути, мы только создаём ссылки на данные, не создавая нового массива.
тем самым если менять данные внутри span, то они и изменятся в основном массиве.
по сути, прикол в том, что вместо того, чтоб создавать новый массив, мы просто работает со старым массивом, но только с теми данными, которые нам нужны.
если в алгоримте, явно нужно использовать ссылки на данные и постоянно новые. например мы ходим рекурсией, а собираем данные в лист массивов, то понятно, что в данном случае в конечном итоге во всем массиве мисивос будет одни и те же значения
-
-
habr.com habr.com
-
m_ChunkLength
количество занятых мест в массиве
так как у нас, по сути, в stringBuilder массив chars. уже имеет фиксированную длину. то есть, это не лист и он не может расширяться. но нам нужно знать сколько уже точно занято мест в массиве.
для этого он и нужен.
-
m_ChunkChars
сам массив chars, куда помещаются данные.
зачему, что это весь длина всего массива в нём есть и индекусы на пустые символы. другими словами, m_ChunkChars.lenght - это capacity данного stringBuilder.
-
num2
сколько осталось после добавление в прошлый чанк
-
count
сколько свободно в этом чанке
-
int num1 = valueCount + this.m_ChunkLength; if (num1 <= this.m_ChunkChars.Length)
смотрим, а если мы создадим новый чанк, с новыми данными, он будет ли меньше чем, то что уже занято в этой чанке
-
m_ChunkPrevious
ссылка на прошлый StringBuilder
-
m_ChunkOffset
то есть сколько всего символом использутеся во всём связном stringbuilder
-
-
learn.microsoft.com learn.microsoft.com
-
Если инициализированный указатель содержит адрес поля объекта или элемента массива, инструкция гарантирует, fixed что сборщик мусора не перемещает или не удаляет содержащий экземпляр объекта во время выполнения текста инструкции.
мы как бы говорим, что хотим работать с этими данными. не изменять или, а только работать с ними
-
-
www.youtube.com www.youtube.com
-
Роман Тарасенко
во-первых, в семье отец и мать имеют одинаковую ценность роли, всё что делает ребёнку мать, может дать и отец. в идеальной семье мать может дать всё ребёнку, так же как и отец
-
-
habr.com habr.com
-
В конце концов, в новый API должны быть заложены все уже существующие плюс предполагаемые новые паттерны применения (например, постепенный парсинг) и ограничения (например, лимит памяти) для нашей библиотеки или приложения.
сигнатура уже подсвечивает как нам следует мыслить. другими словами, указывает, что должен делать новое api
-
глубь
идея в том, чтоб начать работу от сигнатуры метода, который нужно рефакторить, как только дано более лаконичное название, аргументы, что из него выходит.
можно уже подставлять ту логику в метод, которая была в старой версий метода.
тем самым мы сначала ограничиваем метод, как бы задаём ему основную логику и суть. а потом просто подстраиваем это логику, которая уже есть под нашу задумку.
то есть название играет свою роль в такой идей
-
-
-
, обрабатывающие пользовательский ввод и преобразующие его на “язык” домена.
у нас та порты - это интерфейсы. поэтому и преобразование на язык домена. под языков имеется в виду методы интерфейса
-
-
habr.com habr.com
-
Мы сразу увидим что эта логика плохо соотносится с бизнес логикой приложения.
по название классов методов, можно явно предположить, что какой-то кринж пишем
-
Сценарий использования (команда), это определение того, как мы можем использовать наше приложение.
по сути, dto, которые говорят, что делать можно
-
подсказка: когда мы определяем интерфейс, мы делаем именно это
сам факт добавление интерфейса говорит, что мы делить обязаности, ибо по дефолту, каждый интерфейс это определённое решение на определенные пробелемы\желания пользователя
-
Таким образом мы не привязываемся намертво к слою фреймворка.
то есть логику, которая доставляется от фрейморрка. например, asp.net httpClient не должен знать слой приложения. мы должны мочь спокойно заменять на разные реализаций
-
Также этот слой является адаптером запросов из слоя фреймворка и отделяет его от слоя предметной области.
адаптеров в том плане, что, например, в asp.net есть контроллеры.
и нам нужно сделать, так чтоб сам фрейморк ничего не знал о domain слое нашего приложения, всё что должен делать контроллер - это давать нам ответ, на какие-то данные. он, по сути, адаптер между сетью и нашим приложением.
тем самым создаётся слое application, который уже манимулирует нашей предметной областью.
наш контроллер адаптер между интернетом и нашим приложением, слой application - это аддаптер между контроллером нашей и предметной областью.
тем самым вся манипуляция\оркестрация над предметной областью происходит в этом слое
-
Слой предметной области, и бизнес логика, реализованная в нем, определяют поведение и ограничения вашего приложения. Это то, что отличает ваше приложение от других, то что придает приложению ценность.
здесь вся реализация того, что мы решили сделать в domain слое. domain слой сказал, как что должно быть. он босс, который ставит условие задачу и дедланйны. а слой предметой области это работник
-
Бизнес логика
мы прописывает интерфейсы, чтоб знать, а что вообще должен делать наш проект. какого его цель
-
рты являются ни чем иным, как интерфейсами, которые указывают другим слоям на то, каким образом будет происходить взаимодействие.
можно сказать gateway.
когда есть слое application. есть некоторые интерфейсы через которые можно попасть в этот слой, в логику application.
мы знаем что application что-то делает, он имеет логику внутри себя. но другим слоем этого знать не нужно и они общатются с этой логикой через интерфейсы. адаптеры
-
Точно так же мы можем реализовать интерфейсы для каких-то ключевых вещей, и реализовать их в других слоях приложения.
то есть условно один интерфейс одно взаимодействие с внешним миром через один адаптер/порт
-
еперь у нас есть возможность добавлять дополнительное поведение, при этом сохраняя зону ответственности каждого класса не перегружая его лишней работой
каждый класс занимается так свой, но в каждом классе, есть другие классы этой же реализаций
-
Также мы можем объединить несколько декораторов в одну цепочку. Например, мы можем обернуть email нотификатор реализацией для работы с SMS, чтобы дублировать сообщения. В этом случае мы добавляем дополнительную функциональность (SMS) поверх отправки email-ов
тем самым одна из реализаций, будет просто внутри себя инкапсулировать другие реализаций.
либо каждая реализация может внутри себя инкапулировать одну реализацию и потом как матрёшкой всё собрать в одну. 1 и 2 в 4, 4 в свою очедерь в 5 и т.д
-
Чтобы сделать код чище, мы можем воспользоваться одним из моих любимых шаблонов проектирования
теперь наш логгер внутрь себя принимает какой-то Notifier. и он в свою очередь запускает Notifier и логику связанную с логированием.
тем самым notifier не берёт на себя много ответственности, и за логирование и за отправку сообщения
-
Использование интерфейсов помогает нам правильно инкапсулировать изменения
мы инкасулируем за интерфейс класс, и тем самым можем заменять класс.
-
Интерфейс гарантирует, что конкретные методы доступны для использования в нашем приложении, вне зависимости от реализации, лежащей в основе.
как только мы написали интерфейс, мы по дефолту подразумевает, независимость реализаций от класса-клиента.
-
Другими словами мы используем интерфейсы всякий раз, когда мы планируем несколько реализаций одного интерфейса.
паттерн стратегия здесь имеют похожую роль
-
Пусть наше приложение формируется само по себе, а не на базе фреймворка, используя последний только как инструмент для решения каких-то задач нашего приложения.
нужно делать так, чтоб контроллеры сервисы, вообще не знали о том, что они используют какие-то библиотеки и т.д.
так же сами сервисы должны быть независимы от других частей проекта, в том числе контроллеров. сервисы должны быть мочь быть перемещены в другие проекты
-
-
www.youtube.com www.youtube.com
-
к
Началось с того, что джон Ален вкинул, что экология из-за потребления пойдёт на дно, и решил построить купол, где буде своя биосфера, полностью независимая от внешнего мира. после двух лет опыта можно заключить, что это был неудачный опыт.
назывался эксперемент "Био сфера 2"
в нём было 8 человек
-
-
doc.rust-lang.ru doc.rust-lang.ru
-
Точно так же методы unwrap и expect являются очень удобными при создании прототипа, прежде чем вы будете готовы решить, как обрабатывать ошибки. Они оставляют чёткие маркеры в коде до момента, когда вы будете готовы сделать программу более надёжной.
даёт оставить места, которые в будущем будут доделываться
-
-
doc.rust-lang.ru doc.rust-lang.ru
-
Тип Box<dyn Error>
можем возвращать любой тип ошибки, главное, чтоб они были "наследуемые" от Error. если быть точнее, то у них должна быть реализация трейта Error
-
Когда
зачем обрабатывать ошибку так где она появилась, если можно его обработать выше, то есть дать возомжоность обработать тому, кто вызвал функицию где эта ошибка произошла
-
тандартной библиотеки имеет варианты, представляющие различные типы ошибок
как я понял, есть много разных готовых Result, которые нужны для разных случаев. под открытие файлов, под tcp запросы и т.д.
-
-
doc.rust-lang.ru doc.rust-lang.ru
-
чтением за пределом буфера, buffer overread,
в C если создать массив, то за пределы его можно ходить и брать данные. Да они не будут принадлежать этому массиву, ну и пофиг)) если хакер может манипулировать индексами в массиве, то безопасности в таком случае не существует.
-
В
в вызове ошибке будет написать место, в котором была вызвата именно команда panic. кто и откуда она, можно узнать используя трассировку
-
- Aug 2024
-
www.youtube.com www.youtube.com
-
толерантным
Толератность - это умение привыкать к разнообразию, привыкать к новому, необычному.
-
-
www.youtube.com www.youtube.com
-
одстрич
Barber barbershop hair salon - for woman. appoinment
how would you like you haircut
roots tips - the ends of our hairs
cape
haircut
-
-
www.youtube.com www.youtube.com
-
Utopia Show
- маньяк с топором ударяет по женщине и вдруг бейспольнтый мяч
- чтошка с двумя ко
- корабль мороженное, как в американских фильмах
- человек с туалетной бумагой ему было больно поттиратся 1850 появилась в 1930 без занос
-
-
www.youtube.com www.youtube.com
-
Лечить инакомыслие. КАРАТЕЛЬНАЯ ПСИХИАТРИЯ
Начальный тезис "что психиатерапия строится на социальных нормах, культуры, времени или страны". то есть социальные нормы - это конструк, по которому те или иные аспекты поведения являются не здоровыми.
для тех людей, которые жили в том контексте имели это считалось нормальным, правильным, никто даже не ставил под сомнения выводы более высоких учёных. это была просто норма, к которой люди привыкли
то есть психитеарапия - это зависимая от внутри социальных аспект и потребностей общества.
1972 году под поднят вопрос о анти гумманных практиках лечения и особенно внимения "велотекучей шизофрений", которая как я понял, не имела обоснованного смысла.
как пример, из культуроного контекста США драпатомания от слова драпать. когда чернокожий хотел убежать из своего "дома". убежать из подчинение белым человеком, находясь в роли раба. но эту псих болезнь посчитали кринжвой.
а еще мастурбация - это психическая болезнь до 1969 года.
ну еще пару женщин находились в психиторопий 50 лет, под "болезью" нравственная не полноценность, потому что у них были не законно рожденные дети.
-
-
refactoring.guru refactoring.guruЛегковес1
-
Легковес
основной прикол паттерна в созданий класса, с статическими данными, которые не будут менятся. например пули спрайт и её скорость. и соединять этот статический класс, с другими данными, которые могут меняться. например, координады пули.
тем самым мы можем сделать куча пуль, у которые работают с одними и теми же статичными данными. скоростью и спрайтом (текстурой)
-
-
-
Хеш IP-адреса
вычислеет по ip кэш, и этот кэш будет ссылаться, на какой-то сервер. для понимание на какой сервер, можно найти остаток от деление этого хэша. и он уже будет индексом сервера
-
Наименьшее количество соединений
у кого меньше сессий, тому он и отправляет данные
-
Применяют
балансировщик знает какой сервер более свободный и туда посылает данные
-
Используют
мы знаем какой пк мощнее какой слабее и тот который мощнее будет прапорционально разности мощности с другими серверами, получать запросы. кто мощнее тот и больше
-
Выделяют
у каждого сервера, есть время на то, чтоб обработать запрос (за квант времени) берётся следующий сервер.
подобная схема есть в комьютерах, где каждый процесс занимает определённый кват времени и после истечения кванта времени ядро процессора берёт другой процесс.
-
Принцип работы кругового алгоритма максимально прост:
такая схема используется в контуре с демонами и прокси, где демон просит каждый прокси по очереди pull данные с сайтов
-
-
www.alltime.ru www.alltime.ru
-
Велес
Перевёнутая А - это знак Бога велеса одно из самых сильных, он ассоцируется с земледельем, скодовостваом.
сам он ярый сторонник справедливости
-
-
www.youtube.com www.youtube.com
-
Главное цыганское гетто Европы
Это видео о том, что в словакий, во первых много цыган, у них есть свой поселение, которых безумно сильно остают от всего мира: 1. электричества, света 2. дома сделаны в ручную, некоторые без крыш как в Африке, или в видео про Сеул. во вторых, правительство Словакий очень помогает им с условиями жизни. строит дома, или проводит электричество.
в этом видео Леша посещяет одно из таких населений Цыган, которое считается самым современным, в этом месте просто куча детей. условно у каждого человека есть, как минимум, 5 братьев и сестер.
оно такое цивильное, потому в этом поселений когда-то родился будущий управляшющий этого района. именно он сделал его ухоженным, практический без мусора и относительно приятным для проживания. хотя до этого было просто тьма мусора по всему району
он в детстве видел, как всё плохо. закончил вуз и получил диплом и стал дипломатом ради того, чтоб сделать жизнь людей в месте, где он родился лучше
-
- Jul 2024
-
habr.com habr.com
-
let result = quote! {
мы создаём новую функцию с этим названием потом втунтри пишет println, что функций запущена потом тело функций, а потом пишет, что функция кончилась
-
Пользовательские derive макросы
это же даёт нам возможность делать реализацию trait (типажа) автоматически.
мы не сами прописывает для каждого новой структруры реализацию типажа, а делает макрос, который сам брать данные из структуры, и используя их реализовывать
-
Функциональные макросы
по сути, обычная функция, чем то похоже на декларативная, только отличие в том, что здесь мы в аргументы суём какой-то код, и уже из него делаем другой код.
тогда как в декларативном мы работает о определёнными аргументами, которые прописываются
-
Декларативные макросыИтак, декларативные макросы в Р
суть в том, что они генерируеют код, из тех данных, которые в них поступили: очень похоже на match.
если упростить - это функций, которые генерируют код. основываясь на аргументах
-
$x:expr ),*
привет Regexp
-
-
doc.rust-lang.ru doc.rust-lang.ru
-
.
то есть, если юзать T дженерик. то внутри могут находится элементы, только одной структуры. то есть есть в screen может быть куча только buttom или куча только TextField. то есть: у нас будет Screen<Button> и только button и можно будет сувать во внутрь этой структуры.
использование же dyn - даёт нам возможность, работать уже с любыми элементами, у которых есть типаж. она в real time будет проверять по ссылке, а есть ли такая логика. то есть ошибка появится во время компиляций.
то есть screen будет однородным - работать только с одной структурой
-
-
doc.rust-lang.ru doc.rust-lang.ru
-
это перечисление Entry, с двумя вариантами: первый представляет значение, которое может существовать, а второй говорит о том, что значение отсутствует.
он просто захватыет этот ключ и смотрит, а есть ли у меня с ним данные
-
Мы не можем использовать
как только мы кидаем значение типа String то hashmap уже над ними владеет. вне неё они уже не существуют
-
-
www.youtube.com www.youtube.com
-
Лучший Гайд
проблема один, если данные отправить на второй микросервис, он может их просто потерять. проблема два. а если эти данные нужно не одному микросервесу а сразу многим.
броке сообщений берёт всю ответсвтенност за отправку данных на себя
-
-
habr.com habr.com
-
Прямое слияние Боуза-Нельсона
здесь мы просто сначала сортируем элементы по два. то есть, кладём в два массива по элементу. и далее обратно в остортированном порядке относительно этого элемента. выходим так, что в основном массиве заведома два элемента рядом будут остортированы, а потом уже берём по 4 элемента в два массива, и уже будет 4 по элемента отсортированных
и т.д
-
Естественное неймановское слияние
мы используем две вспомогательные ленты, где пытается составить отсортированные массивы. на одной такой ленте куча таких массивов. конец каждого помечен указателям.
как факт, мы точно уверен, что первые два массива из двух вспомогательных лент
дадут нам более отсортированный массив чем был до этого.
мы получаем два массива в который элементы идут по возрастанию: а мы как раз ходим по обеим массивом и смотри меньшей элемент.
мы заведома из двух массивов уже сделаем один отсортированный.
то есть с каждым разом на вспомогательных лентах будет все более и более большие отсортированные массивы
-
-
-
Quicksort
есть так же алгоритм quickSelect придуманный тем, кто и этот придумал. он похож на этот, только главная суть поиска одного элемента в не остортированном массиве, так если бы он был был отсортирован.
там выбирается опорный элемент, но там ищется только расположение как раз опорного элемента, если бы от был отсортирован.
то есть, да мы просто ищем только один элемент
-
-
-
Цикл обработки событий
Паттерн наблюдатель кароче: мы как клинет сервера, только ждём новых данные, которые сокет нам скинет.
то есть, мы как сервер подписываемся на сокет, и когда у него появляются новые данные, он нас об этом уведомляет.
-
-
docs.rs docs.rs
-
Gossipsub does not provide peer discovery by itself
сам gossibsub сам не может искать пиры и их подсоеденятся
-
-
-
D Token — это JWT
мы используем наш Auth server как некую систему, в которой хранится наш пользователь. мы не просто берём токен из auth server. чтоб уже как-то работать с сервером (google mail или vk) через токен. а полноценного пользователя этой системы, с его правами и т.д.
OpenIdConnect - даёт нам полноценного пользователя другой системы. если нам в нашем проекте лень или нету необходимости создавать авторизацию нам нужен просто токен с которым будем работать, то это как раз про IdConnect.
ответсвенность за регистрацию полностью лежит на сервере auth server
-
-
ip-calculator.ru ip-calculator.ru
-
Итак, процесс:
один кидает многоардессный запрос с каким-то именем. и потом когда этот запрос доходит до машины с этим именем, то эта машиша кидаем всем запрос со своим ip адресам, и в итоге все локальыне машины знаю его ip. то есть записали в кэш
-
-
habr.com habr.com
-
отличие от других типов пиринга, веерные соединения являются однонаправленными; они всегда указывают с узла вне темы на узел, подписанный на тему.
есть узел x - который создал сообщение на определённую тему. сам он на эту тему не подписан.
верные соедением - ,по сути, это соединение, которые идут только в одну сторону, а данном случае в сторону, где узлы подписаны на тему, для которого x создал сообщение.
условно, какая-нибудь беседе в телеге, где вдруг чел решил сделать рекламу, чего-то. сам он этим не занимается, но реклама есть реклама по сути, он кидает сообщние каким-то людям, с тем, что им может быть интересно.
сами это узлы получатели, на знают, что они были выбраны, для них это связь только с метаданными
-
Сплетни
Каждый пир сплетничает шестью пиром, рандомным, по служебному "каналу". это происходит каждую секунду.
когда увидел вдруг рандомного чела, с которым почти не общается, а он тебе вкинул интересную инфу, которую ты остальным рассказываешь
-
Узлы хранят список недавно просмотренных сообщений
сообщения, которые они просмотрели, они помечают, что просмотрели, для того, чтоб не переотправлять их более одного раза.
-
-
habr.com habr.com
-
В таки достиг А, пройдя через NAT A, до того, как А отправил свой SYN заново. В зависимости от операционной системы, может произойти два сценария:
А отправил запрос, но Б заблокировал после этого Б отправил запрос, и а его не заблокировал, так как он уже сделал дырку.
это произдодёт в том случае, если 2 запрос А. будет медленее первого запроса Б.
-
Таймауты простоя UDP
нужно моментами кидать пустые запросы, чтоб дырка не закрылась.
условно это когда у тебя окно постоянно само закрывается а на улице пипец какая жара и ты каждый 5 минут идёшь опять приоткрывать окно на максимум
-
Если сообщение
И самое интересное!! если в тоже время машина B пробёт дыру, до момента, когда машина A попадёт уже к NAT B. то NAT B просто отклонит запрос от А.
то есть, обе машины, должны пробить дырки в NAT перед тем, чтоб они могли отправлять друг другу запросы.
если один клиент не успеет сделать дырку для другого клиента, то ничего не будет.
-
Представим
прикол в том, что когда приложения А хочет сделать запрос на B. зная и локальный и глобальный адресс B.
NAT A уже имеет соединение с сервером S. и здесь NAT A делает хитрый мув, он оставляет ip и порт, тот же, Которым он пользовался при общений с сервером. да, когда запрос проходит через nat. nat при новой сессий генерирует порт, который будет переадрессовываться на порт приложения, где находится приложение. ну и свой ip используется, который тоже будет переадрессован на ip машины внутри NAT
-
в которой находится А, так как чисто случайно сложилось, что его адрес совпал с адресом В в локальной сети В
А может отравить запрос на локальнный адресс Б, а этот локальный адресс в интернете принадлежать, например, яндексу.
локальный адресс - это адрес машины внутри NAT, которая отправила запрос на сервер
-
-
-
эксплойт — это средство для выявления слабости в вашей сети или системе и использования этой уязвимости для получения доступа.
это некоторые инструмент, средства, может скрипт, который используя уязвимость, дать хакере, доступ к комьютеру, к которому используется этот эксплойт
-
-
habr.com habr.com
-
В каких задачах мо
Главная идея в том, чтоб в какой-то момент жизни, достать элементы, которые важнее остальных. по сути, можно сказать, когда стоишь в больнице на приёме к травматологу в очереди. и вдруг приходит человек у которого топор в спине, или рука висит, как У гарри поттера после игры в квидич, когда пантовый колдун решил помочь ему вылечить руку. он же сразу проходит без очереди и пофиг, что ты уже час ждёшь
-
-
metanit.com metanit.com
-
b000_0011;
Мы просто работает с последними двумя битами, в них и находится наше значение. мы берём и на два разряда назад, чтоб получить другое число.
а это как раз маска для получения значение, которое находится внутри битовой структуре
-
-
habr.com habr.com
-
мы получили
мы кидаем слово с 21 битом. проводим еще раз алогос и если получаем уже другие контрольные биты. то что-то пошло не так и нужно искать что именно пошло не так. а именно просто суммируем измененные биты. точнее их индексы и получаем индекс, где бит был изменён
-
битами, которые мы получили
то есть мы знаем контрольные биты
-
Вычисление контрольных бит
Далее находим все биты, который контролирует контрольный бит. а он контролирует каждый N бит интервалом в N. где N - это номер (индекс, но с 0, а 1) самого бита. и суммируем все биты. и если в итоге в сумма чётное число, то ставим 0. иначе 1. здесь просто используется бит чётности
-
- Jun 2024
-
www.youtube.com www.youtube.com
-
0 ДЕВУШ
Долго лучше не общатся в соц сетях. если есть симпатия после нескольких смс. приглашай погулять максимум на завтра
-
-
www.youtube.com www.youtube.com
-
Directed
акциклическим графом - это граф без циклов. с такими графами можно реализовать топологическую сортировку. топологическая сортировка - сортировка графа, в условный лист, где каждый n будет идти после того n1, из которого можно попасть в этот n.
то есть вершина, каждая n вершнина, которая попала первая в сортировку, будет стоять раньше чем те, который попали позже.
последняя вершина не имеет ребра для перехода в другую вершину.
а еще topsort могут быть разными, здесь можно добавить цвета, для понятие, которые уже посещены
-
-
habr.com habr.com
-
LRU
суть в том, что сам кэш ограничен в своём размере, и ему бы желательно удалять те элементы, которые не кому не нужны.
ну и суть LRU в том, чтоб вытеснять самые неиспользованные элементы, новыми. что даёт возможность хранить в кэше, наиболее популярные данные, и не хранить, то что нужно мало кому.
-
Мы
то есть, обычная концепция кешей: то, что часто используется остаётся, а то что никому не нужно, или мало кому нужно, удаляется, либо по крайне мере быстро не достать
-
-
linux-notes.org linux-notes.org
-
арбитр
Кароче, используется как в nginx. там тоже есть два вида процессов worker и master. в данном случае это master - он меняет какая бд с mongo будет основной, а на какие будут работать как реплики (копий с теми же данными внутри) так же как nginx master работает с worker процессом. ну только удаляет или создаёт
-
-
refactoring.guru refactoring.guruМост1
-
Абстракция
то есть, по сути, есть какие-то кнопочки, они что-то делают,
а что уже делают зависит от реализаций, которая внутри них заложена,
что делает интерфейс абсолютно независимым, от реализаций.
-
-
www.youtube.com www.youtube.com
-
ПОЛНАЯ
Экзорцизм - это столкновение между физическим миром и паронарпальным измерением, где человек борется с силами, которыми не возможно увдиеть, но можно задокументировать их влияния на физический мир.
-
- May 2024
-
www.youtube.com www.youtube.com
-
Почитай
на 7:01 она прям поняли, что зрители могли её не правильно понять, и сразу подхватилась объяснять. это прям видно на эмоциональном уровне, она прям резко почувствовала эту эмоцию
-
-
habr.com habr.com
-
3.2. Установление P2P сессий
Кароче, два хоста соединяются используя данные другого хоста (глобальный и локальный (NAT) ip), который находится сервере.
как только они получили данные другого хоста, они отправляют данные ему. в этот момент оба хоста знают ip друг друга.
-
Сервер обратной связи
Клиент кидает на сервер, пару значений ip и порта. 1. ip самого клиента, откуда отправляется сам запрос (сам хост) 2. глобальный ip (как пример, ip модема).
первый от отправляет в udp пакете, второй получает от из самого запроса (sourse).
-
Ретрансляция
База, можно уже и VPN установить на сервер)) больше для аналогий, чем для смысла))
-
Исходящий NAT
По сути, как раз это и мешает peer-to-peer, два хоста из разных NAT не могут подключится к друг другу, по причине, того, что NAT (модем) защищает внутри себя ip хостов, к которому хочет подключится другой хост. то есть прямого подключение просто нету.
а сам NAT может пропускать, только уже созданные соединения.
-
-
viahtml.hypothes.is viahtml.hypothes.is
-
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
-
libp2p
when using single stream has several problem 1. can't use several application at once, if app is using stream others have wait
-
-
docs.libp2p.io docs.libp2p.ioQUIC7
-
/ip4/192.0.2.0/udp/65432/quic-v1/
likely multiaddr
-
To
each peer has a self-signed certificate, this ceritificate they sing a their private key, which is located on their system
-
Head
if one packet is lost the next packet cannot will be sent. until first packer is received.
-
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
-
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)
-
TLS
TLS establishs an encrypted and auth connection it runs on top of tcp.
-
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
-
-
www.youtube.com www.youtube.com
-
Грабим Дома
по сути, ходьба по лестнице (либо число фибоначи), но отличие в том, что в ходьбе по лестнице мы делали сумму прошлого элемента и позапрошлого. (dp[i-1] + dp[i-2]) а в этой задаче. мы берём либо значение прошолого элемента и всё (di[i - 1]). либо сумма настоящего элемента и позапрошлолго (dp[i] + dp[i-2]).
ну и данной задаче у нас на каждом шагу есть своё число не равное нулю, тогда как в лестнице каждый шаг равен 0 и он считается из прошлых.
-
-
doc.rust-lang.ru doc.rust-lang.ru
-
са мономорфизации, выполняемого компилятором, когда мы используем ограничения типажей для обобщённых типов: компилятор генерирует частные реализации функций и методов для каждого конкретного типа, который мы применяем для параметра обобщённого типа. Код, который получается в результате мономорфизации, выполняет статическую диспетчеризацию , то есть когда компилятор знает, какой метод вы вызываете во время компиляции
мономорфизация как было сказано раньше - это когда комплилятор уже создаёт доп методы, из обобщенных типов. что по сути является статической диспетечеразией.
а есть еще динамическая - это когда уже во время программы, будет понятно, что использовать.
rust использует указатель, чтоб попробовать вызвать метода трейта у структуры, и если если его нету, то rust выдаст ошибку.
-
типаж-объекто
по сути. типаж-объект, это тот самый интерфейс. он даёт нам возможность, иметь не с опрелёленным типом. если бы мы использовали Where T: type. что объективности даст мономорфизацию. а с теми типами, которые реализуют в себе этот типаж. по сути, мы начинаем работать с типами не на прямую через тип, а через типаж-объект, что по сути может считатся эквавалентом интерфесов, либо абстракт класса.
-
-
docs.rs docs.rs
-
NetworkBehaviour,
this behavior beetween peer, how them will talk to each oher
-
Nodes identify each other via their PeerId which is derived from their public key.
we created PeerId by publicKey
-
-
www.phind.com www.phind.com
-
Метод Wait()
Wait - просто заставляет поток ждать когда асинхронная операция выполнится, в случае async await поток переходит на другие задачи, а в случае метода Wait() поток другие задачи не выполняет и просто ждёт когда асинхронная операция выполнится.
что можно понять из закономерностей выше это может понизить производительность
-
Метод OnCompleted()
OnCompleted - просто ждёт когда асинхронная операция выполнится, и как только выполнится выполнит внутри себя другую операцию, сам он принимает в себе Action
-
-
pl-launchpad.io pl-launchpad.io
-
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
-
peer keeps
node have list other nodes, which closer to it. it need to find clode node, for key.
-
Introduction
DHT is like a table with data of pc to connect them.
-
distance(key1, peer9) = 4
we find distance beetween key1 and peer9. where key1 is data which store in other peer, or this
-
-
www.youtube.com www.youtube.com
-
День, когда Нью-Йорк
Дэвид Берковиц 31 июля 1977 года последние жертвы.
так же 1977 пропал весь свет в нью йорке
-
-
nginx.org nginx.org
-
Получив
Есть гланый процесс, он следит за тем, что делают процессы и так же может менять конфигирацию. то есть, как только мы видём команду nginx -s reload. наш главным процесс проверит новую конфигурацию на правильность в синтаксисе, запустит её и создаст новые рабочие процессы, который уже будет обрабатывать новые запросы, по этой конфигураций.
а старые докончат запросы, который остались внутри. то есть запросы, который прям во время reload обрабатываются и потом закончат своё сущестование
-
Рабочие процессы
Рабочие процессы - это как раз те самые процессы который выполняют обработку запросов (worker_processes)
-
-
www.youtube.com www.youtube.com
-
После Рима
1064 год корабль выбросила во владения франций на нём был гарольд(потенциально будущий правитель англий). правитель франций, решил выкуп за него получить. но выкупил его вильгельм бастард (конкурнт на трон) и вильгем попросил забыть про трон, гарольд, даже поклялся при святых, что не будет метить на трон но как только он попал в англию он забыл, что поклялся.
1066 король англий умер и королём стал Гарольд. но это фейк.
сто лет до этого викингу дали город, чтоб он защищал он других викингов. так появилась нормандия, где в основнмо жили викинги
-
-
www.youtube.com www.youtube.com
-
Покоряя Дракона
первое, что мы делаем создаём свой интерфейс. через который будут проходить запросы. но вопрос как через виртуальный интерфейс, машину, будет получать данные с другого места этого интерфейса? сам этот интерфейс не может лазить по интернету.
всё просто wireguard создаст по верх одного запроса у которого адресс получателя это ip из вирутального интерфейса. второй запрос, в котором ip будет уже из интернета (допустим ip сервера).
и когда пакет с данными попадёт на сервер, wireguard внешний запрос уберёт, и оставит пакет, в котором ip от виртуального интерфейса.
мы создаём и приватый и публичный ключ. как и с ssh. приватный ключ мы оставляем себе, а публичный отдаём другому устройству.
-
-
www.youtube.com www.youtube.com
-
Американский Задрот
начало в конце декабря 1968 год : убили подросток на дороге. скорее всего была влюблённая пара.
через пол года в июле 1969 убили еще одну парочку.
и через 3 недели. 1 августа пришло письмо в 3 журнала
в каждом письме было часть шифры, по которому можно было бы узнать имя убийцы. но имени там не было)) но в конце расшифровки была похоже на рандом слов. и в самой расшифровке были ошибки.
так же еще через 3 месяца после прошлого убийства убил еще одну пару.
потом убил таксиста в городе, а не как раньше в лесу.
в письме написал, что полиция лохи. он чилил в парке, когда убил такстиста, но и собаки, и полиция там были, да к тому же с прожекторами.
одно из его писем расшифровали только 2020 года.
а есть вероятность, что первое убийство было в 1966.
всегда убивал разным оружием
так и не нашли его кароче, вообще.
-
- Apr 2024
-
habr.com habr.com
-
очно так же, когда пир получает новое сообщение от другого пира, он сохраняет сообщение и пересылает его копию всем другим пирам, к которым он подключен полным соединением:
и следующий пир(узел), который получил это сообщение делает копию себе и отправляет своим узлам с полным соединением.
-
которые станут его партнерами с полным соединением по этой теме
он делает полное соединение с теми узлами, которые имеют те же самые темы, что и он, и обрезает соединение, если отписывается от общей темы.
все это он понимает, так как со всеми имеет служебную связь.
-
Если у какого-либо узла окажется слишком мало полных соединений, он случайным образом выберет служебные соединения и привьёт их до полных
если у узла мало полных соедений, он сам может сделать привику к служебному узлу. и тоже самое наоборот
-
Прививка и обрезка
два узла - могут быть только либо переправлять между собой полные сообщеия, либо только метаданные. но эти узлы могут изменить свой стиль работы. это называется прививка (grafting) - это когда узлы из общение только метадыннаыми переходят в общения с полными сообщениями. и обрезка (pruning)- обратная прививке
-
Обмен полными сообщениями
Обычно, так идёт связь не все ко всему, ради оптимизаций трафика, чтоб каждый не отправлял всем данные. у каждого пира может быть 3 связи.
-
Обмен мета-данными
По сути связь идёт между всеми пирами, это нужно, чтоб все пиры знали друг о друге, у кого, что есть, можно сказать служебные. они помогают в полном взаимодейсвие между друг другом, для полноценных сообщений
-
-
doc.rust-lang.ru doc.rust-lang.ru
-
Теперь
пока могу сказать, что traint играет роль extensions методов c интерфейсами. мы создаём trait, который играет роль интерфейса, и уже под этот трайт реализуем "extentions" логику, для определённого типа.
-
-
practicum.yandex.ru practicum.yandex.ru
-
Робот пишет сообщение в очередь:
Здесь юзается брокер сообщений, по сути робот берёт ссылку кидает в брокер и потом обработчики, кто свободен берёт эту ссылку и обрабатывает её. если он не смог обработать, это ссылка опять в брокере. она выходит из таймаута видимости. время пока ссылка не будет видна другим обработчикам
-
-
www.youtube.com www.youtube.com
-
архитектура (№10)
персистеность - идея в живучести, если база данных живёт условно дольше чем сам сервис, который им пользуестя она персистента. то есть из нее данные не удаляются, они есть всегда с самого начала сущетсвования и до конца. и сервис спокойно может ей пользаться
транзакций в redis - тупо, чтоб собрать все операция в очередь и выполнить их по очередно, при этом пофиг выполнится ли все операция, транзацация выполнится даже в любом случае. в postgresql, тразнакция отменится, Если не все операция внутри выполнятся, то есть у некоторых будут ошибки.
суть оптимистической блокировки в том, чтоб не получить одному клиенту не верные данные измененные другим клиентам.
эта даёт возможность менять значение в ключа, и быть полностью увереным, что никто его никак не изменит.
по сути
-
Микросервисная
либа для реддиса, StackExchangd.Redis
LRU - чем нужнее, тем меньше шансов на удаления
-
-
practicum.yandex.ru practicum.yandex.ru
-
Обращение по HTTP
через api gateway - можно делать, те же запросы к backend. условно он уже отыграет роль proxy. он просто перенаправит (forwarding) на другой url
-
Интеграция с Object Storage
api gateway - даёт возможность, создавать уже своё api, для взаимодействия со внутреними сервисами yandec cloud
-
Пример скрипта для данного расширения:
можно просто через это api gateway, создать запрос к другому сервису. apigateWay можно сказать играет роль swagger, он некоторый слой, который помогает именно отправлять запросы куда-то.
-
-
practicum.yandex.ru practicum.yandex.ru
-
OpenAPI 3.0
по сути - это спецификая, которая помогает создавать единый стиль restApi. по сути спецификая, как и до этого было написано, удобный элемент для того, чтоб программам, работать с api в написаний документаций
-
-
www.youtube.com www.youtube.com
-
Микросервисная архитектура
- Редис как элемент, для синхронизаций кэша на большом количестве серверов, чтоб пользователь не кидался на разные сервисы, и каждый раз не кэшировал данные с одного и тоже же запроса, но с разных серверов.
2.
-
-
doc.rust-lang.ru doc.rust-lang.ru
-
который выполнит код если входное значение будет соответствовать единственному шаблону, и проигнорирует все остальные значения.
if let - удобна в том случае, когда нужен только один из всех вариантов, enum. остальные он просто будет игнорировать.
-
-
doc.rust-lang.ru doc.rust-lang.ru
-
Другими словами
по сути, используя option, мы работатаем с "null" на уровне кода, мы на уровне кода прописывает, может ли этот тип иметь "null" или нет.
всё написано, так, что просто невозможно, использовать пустое значение.
-
IpAddrKind::V4
по сути как ассоциативную функцию
-
-
practicum.yandex.ru practicum.yandex.ru
-
созданная функция
Кароче, по сути она работает, компонента,
есть какая-та среда, в которой будет функция, сама среда не знает, ничего про функций, пока не запустить всё.
по сути как было сказано - это как контайнер, со своим миров, в которым мы впихивает свою функцию
-
-
doc.rust-lang.ru doc.rust-lang.ru
-
Создание экземпляра структуры из экземпляра другой структуры с помощью синтаксиса обновления структуры
а еще можем через ...<nameOldData> создать новую структуру но с новыми данными
-
Использование сокращённой инициализации поля
можно не писать прописывать всем полям значения, компилятор - это сам сделает на изичиах
-
-
practicum.yandex.ru practicum.yandex.ru
-
или ноду (node)
можно сказать, что это сервер, где стоит, proxomx
-
Под — это логический хост.
можно сказать, что это qemu в proxmox системе
-
оркестрацией
Умение управлять множество контейренов, через одну точку входа, это и есть оркестрация.
слабая аналогия - это роутер
-
-
doc.rust-lang.ru doc.rust-lang.ru
-
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[..] }
так то прикольный код, первый раз такое вижу
-
enumerate()
Превращает элементы коллекция в кортеж, где первый элемент - это индекс этого элемента в массиве, а второй сам этот элемент
-
-
doc.rust-lang.ru doc.rust-lang.ru
-
s1 после создания s2 ; это не сработает:
а все потому, что по правилу, у данных может быть только один владелец.
s1. не будет сущестовать по примеру ниже.
-
Длина — это объём памяти в байтах, который в настоящее время использует содержимое String
один байт это 8 бит, то есть 255 возможных значений. сюда как помещятся все эти ackii значения.
-
Эта группа данных хранится в стеке
в стеке хранится длина и емкость (можно сказать массива) и ссылка на сам массив.
в куче же сами символы (если это строка), ибо он не понятно какого размера, и в будущем может менятся
-
память автоматически возвращается, как только владеющая памятью переменная выходит из области видимости
как только переменная исчезает из зоны видимости она перестаёт существовать.
-
-
doc.rust-lang.ru doc.rust-lang.ru
-
Здесь ошибка:
прикол в том, что мы возвращаем ссылку на указатель, который в свою очередь исчезает, когда переменная выходит из области видимости. (заканчивает функция, где она была создана).
тем самым ссылка будет указавывать хз куда.
-
Ошибка:
сейчас одновременно, и mut ссылка и обычная ссылка, и этого компилятор не разрешает, ибо очень нагло, есть ссылка на неизменяемый объект вдруг изменится, это было бы контр интуитивно
-
и продолжается до последнего использования этой ссылки.
ссылки очень хитро работают однако, ссылка сама "исчезает" когда она уже не будет использована, то есть компилятор, знает, когда ссылка последний раз использовалась, и в последнее использование её удаляет. умный компилятор
-
не является его владельцем
по сути ссылка это как есть владелец дома, и те кто в нём прописаны (те кто прописаны это ссылки на дом). по сути те же права, но живой ты или нет, от этого квартира никому другому не уйдёт. квартирой ты можешь пользоваться, но ты ей не владеешь, а только пользуешься
-
Области неизменяемых ссылок r1 и r2 заканчиваются после println! где они
здесь компилятор настолько умный, что сам понимает, что r1 и r2 не будут использованы и тем самым не выдаёт ошибку
-
Рисунок 4-5: диаграмма для &String s, указывающей на String s1
Ссылка указывает на указатель
-
-
practicum.yandex.ru practicum.yandex.ru
-
качестве переменных,
переменные можно закинуть в спецификацию
-
-
doc.rust-lang.ru doc.rust-lang.ru
-
'counting_up: loop {
сам по себе loop, в данном примере это не выражение, а только инструкция
-
loop
бесконечный цикл
-
Использование if в инструкции let
Можно создавать выражение внутри if, и тем самым возвращать значение оттуда и присваивать к переменной
-
-
doc.rust-lang.ru doc.rust-lang.ru
-
Выражения
Кароче это функция или любая другая, штука, которая внутри себя имеет вычисления, и возвращает какой-то результат
-
-
doc.rust-lang.ru doc.rust-lang.ru
-
let a = [3; 5];
Можно делать такие массивы: в данном случае будет массив первая отвечает элемент, второй за количество [3,3,3,3,3]
-
-
www.youtube.com www.youtube.com
-
Почему в этой стране живут почти одни мужчины?
Говорит, о том, как много графики с разной статистикой, много говорит о событиях в реальной жизни.
-
- Mar 2024
-
-
аналитическом
противоположный язык, он вместо окончнаний имеет служебные слова для понимания всего и в следствие этого предложение нужно строить в определённом порядке
-