Программистика
Закрытый канал
Лучший канал про python Ссылка для друга: https://t.me/+Ai6ughKtf5g2ZmFi Купить рекламу: https://telega.in/c/+Ai6ughKtf5g2ZmFi Админ: @JeyRahol По рекламе: @ReivuManager
Больше5 759
Подписчики
-924 часа
-367 дней
-9130 дней
Архив постов
5 758
Пакеты и маршрутизаторы
Сегодня я вам расскажу об очень важном нововведении, позволившим сообщениям быстрее
перемещаться по сети с несколькими переходами
А именно стало разбиение каждого сообщения на небольшие фрагменты, которые впоследствии отправлялись по отдельности. В области сетевых коммуникаций эти сообщения называются
пакетами.
Сперва использовался такой принцип: при разбиении сообщения на отдельные пакеты, если короткое сообщение было отправлено после длинного сообщения, первому не приходилось ждать завершения отправки второго. Вместо этого первому пакету короткого сообщения требовалось дождаться лишь
завершения отправки текущего пакета длинного сообщения. До тех пор, пока короткое сообщение не было отправлено полностью, а передача длинного сообщения не возобновилась по полному сетевому соединению, система чередовала отправку пакетов этих сообщений.
Разбиение сообщения на пакеты значительно сократило объем памяти, требующейся от промежуточных устройств. Теперь вместо того, чтобы хранить сообщения в течение нескольких часов, им достаточно было хранить некоторое количество пакетов лишь несколько секунд, а остальные пакеты ожидали своей очереди на исходящем канале.
По мере отказа от сетей с промежуточным хранением начали появляться особые устройства, специализирующиеся на транспортировке пакетов. Первоначально они назывались интерфейсными процессорами обработки сообщений (Interface Message Processors – IMPs) и представляли собой интерфейсы между обычными устройствами и остальной частью сети. Позже эти устройства получили название маршрутизаторов, поскольку их цель заключалась в маршрутизации получаемых пакетов к конечному месту назначения.
С появлением маршрутизаторов, специализирующихся на транспортировке пакетов по сетям с несколькими переходами, подключать устройства разных производителей к одной сети стало намного проще. Все, что для этого требовалось, – подключить обычное устройство к маршрутизатору. Остальную же работу по организации связи выполняли другие маршрутизаторы.
Если несколько устройств, находящихся рядом, были объединены в локальную сеть (Local Area Network – LAN) с помощью физического провода, следовало подключить маршрутизатор к локальной сети. Затем, после отправки данных через маршрутизатор все устройства в этой сети могли отправлять данные дальше через глобальную сеть (Wide Area Network – WAN).
Всем большое спасибо за внимание, вот такой у нас получился экскурс в историю появления сетей и передачи информации по сети, ставтьте реакции, если вам понравился такого рода материал!🔥5 758
ПРОСТРАНСТВО ИМЁН В C++
Сегодня я вам расскажу, что такое пространство имён и для чего оно нужно, в одном из моих любимых языков программирования, C++
Пространство имен — это область, в рамках которой определяются различные идентификаторы (имена типов, функций, переменных, и т. д.). Пространства имен используются для организации кода в виде логических групп и с целью избежания конфликтов имен, которые могут возникнуть, особенно в таких случаях, когда база кода включает несколько библиотек.
Проще говоря, пространство имён предопределяет те, символы и имена, которые можно использовать в вашем коде.
Все, кто работал с языком C++, знают, что в языке есть стандартное пространство имён: std. Именно в нём хранятся название основных типов данных, методов языка. И именно из-за пространства имён, когда вы пытаетесь назвать переменную или функцию именем, которое уже зарезервировано в пространстве, то компилятор выдаёт ошибку. Так же если в коде не указывать пространства, то компилятор, просто, будет не понимать, что это за имя такое, вот например:
#include <iostream>
int main()
{
cout<<"Hello World";
return 0;
}
Данный код разумеется выведет ошибку, вот как она будет выглядеть: error: ‘cout’ was not declared in this scope;
Это означает, что компилятор не понимает, что такое функция cout, ведь это имя содержится в пространств имён std.
Вот примеры, где ошибок уже не будет:
#include <iostream>
using namespace std;
int main()
{
cout<<"Hello World";
return 0;
}
ИЛИ
можно использовать оператор разрешения области (::)
#include <iostream>
int main()
{
std::cout<<"Hello World";
return 0;
}
Так что все стандартные типы и функции библиотек C++ объявляются в std пространстве имен или пространствах имен, вложенных внутри std.
Давайте так же уделим немного времени вложенным пространствам имён.
Вложенные пространства имен
Пространства имен могут быть вложенными. Обычное вложенное пространство имен имеет неквалифицированный доступ к членам родительского элемента, но родительские члены не имеют неквалифицированного доступа к вложенному пространству имен (если он не объявлен как встроенный), как показано в следующем примере:
namespace std{
void zeb()
{
//Ваш код
namespace Details{
void foo{
//Ваш код
}
}
//Ваш код
}
}
Вот так это примерно выглядит.
Думаю можно на этом завершить.
Спасибо за внимание! Ставьте реакции, чтобы я знал, что вам интересно, оставляйте комментарии с вопросами, будем и на них отвечать🔥
@programistica // #cpp #Пространство_имён5 758
Пример возможной архитектуры информационной системы
@programistica // #Шпаргалка #Информационные_системы
5 758
Спасибо за полезную инфу. Было бы не плохо если добавляли бы тэги. Типо #заголовкибезопасности, тыкнул, и на тебе все посты по заголовкам)
5 758
Один из подписчиков предложил поменять систему тегов на канале. И нам показалась эта идея очень хорошей, ведь она поможет смотреть вам те посты, тематика которых вам больше всего нравится.
Мы уже изменили систему тегов, пост со всеми тегами находится в закреплённом сообщении(Теги будут ещё дополнятся по мере выхода постов)
Но есть небольшой недочёт, новые теги подходят только для постов, выпущенных после 28 января.
Надеюсь новая система тегов вам понравилась!❤️
Так же пишите в комментарии, на какие темы вы хотели бы видеть ещё посты🔥
5 758
ЭТАЛОННЫЕ МОДЕЛИ СЕТИ
В этой статье я вам расскажу об одной из основных эталонных моделей, как OSI.
В основе OSI лежит проект, разработанный Международной организацией по
стандартизации (lnternational Standards Organization, ISO). Это был первый
шаг к международной стандартизации протоколов, используемых на различных
уровнях. Модель была пересмотрена в 1995 году и получила название эталонной модели взаимодействия открьтых систем ISO (ISO OSI (Open Systems Interconnection)
Reference Model). Она описывает вопросы соединения открытых систем, то
есть таких, которые открыты для обмена информацией с другими системами.
Эта модель включает 7 уровней, выделенных согласно следующим принципам:
1. Каждый уровень соответствуют отдельной абстракции.
2. Все уровни выполняют четко определенные функции.
3. Функция каждого уровня выбирается с учетом создания в дальнейшем
международных стандартизированных протоколов.
4. Границы уровней должны выбираться так, чтобы минимизировать поток
информации через интерфейсы.
5. Количество уровней не должно быть слишком низким, чтобы не приходи-
лось собирать разные функции в одном уровне; но нельзя, чтобы их было
чересчур много, иначе архитектура будет громоздкой.
Центральными для модели OSI являются три понятия:
1. Службы.
2. Интерфейсы.
3. Протоколы.
(Ниже я выложу фотографию, которая иллюстрирует строение OSI)
Вероятно, главная ценность модели OSI - четкое разграничение этих поня-
тий. Каждый уровень предоставляет вышележащему уровню какие-либо службы.
Определение службы говорит лишь о том, что делает данный уровень, но не
о том, как вышележащие уровни взаимодействуют с ним или как он работает.
Надеюсь вам понравилась статья по этой теме, ставьте реакции, если хотите узнать больше по этой теме!!!5 758
Я честно удивлён, что в голосовании победил python.
Но я решил сперва посоветовать вам несколько крутых библиотек, которые используются в Веб-разработке.
Scrapy
Scrapy – это библиотека, с которой удобно собирать данные для вашего приложения. Ее используют для написания поисковых роботов (веб-краулеров) и других алгоритмов для сбора данных. Она поддерживает асинхронность и поэтому позволяет быстро и эффективно решать самые разные задачи: от загрузки веб-страниц до их обработки и сохранения в различных форматах.
Dash
Dash — это библиотека Python для работы над веб-приложениями. Ее отличает доступный инструментарий для создания графических интерфейсов (GUI), через которые пользователь может работать с данными. А еще в ней удобно делать приложения с интерактивными диаграммами, графиками, дашбордами.
HTTPX
HTTPX — одна из главных библиотек для бэкенд-разработчиков. В отличие от другой популярной библиотеки — Requests, HTTPX позволяет работать не только с синхронными, но и с асинхронными HTTP-запросами. Эта библиотека также поддерживает современную версию протокола — HTTP2 и довольно проста в использовании.
🔥Надеюсь, они вам пригодятся!
5 758
Заголовки безопасности HTTP
В этой статье мы поговорим о таком заголовке безопасности, как Content Security Policy (CSP)
Content Security Policy (CSP) - это дополнительный уровень безопасности, который помогает обнаруживать и смягчать определенные типы атак. включая Cross-Site Scripting и атаки с внедрением данных.
Чтобы включить CSP, необходимо настроить веб-сервер так, чтобы он возвращал HTTP-заголовок
Content-Security-Policy.
Использование CSP
Настройка политики безопасности содержимого включает в себя добавление HTTP-заголовка Content-Security-Policy на веб-страницу и присвоение ему значений, определяющих, какие ресурсы агенту пользователя разрешено загружать для этой страницы. Например, страница, которая загружает и отображает изображения, может разрешать изображения из любого места, но ограничивать действие формы определенной конечной точкой. Правильно разработанная политика безопасности содержимого помогает защитить страницу от атаки межсайтовых сценариев.
Вот пример указания политики:
Content-Security-Policy: policy
Теперь давайте разберём пару практических примеров:
Пример 1:
Администратор веб-сайта хочет, чтобы все содержимое поступали из собственного источника сайта (за исключением поддоменов)
Content-Security-Policy: default-src 'self'
Пример 2:
Администратор веб-сайта хочет разрешить доступ к содержимому из доверенного домена и всех его поддоменов (это не обязательно должен быть тот же домен, на котором настроен CSP)
Content-Security-Policy: default-src 'self' example.com *.example.com
Тестирование политики
Чтобы упростить развертывание, CSP можно развернуть в режиме только отчета. Политика не применяется, но обо всех нарушениях сообщается по указанному универсальному коду ресурса (URI).
Для указания политики можно использовать HTTP-заголовок Content-Security-Policy-Report-Only, например:
Content-Security-Policy-Report-Only: policy
Включение отчетности
По умолчанию отчеты о нарушениях не отправляются. Чтобы включить отчеты о нарушениях, необходимо указать директиву политики report-to, указав по крайней мере один универсальный код ресурса (URI), по которому будут доставляться отчеты:
Content-Security-Policy: default-src 'self'; report-to URI
Синтаксис отчета о нарушениях
blocked-uri
Универсальный код ресурса (URI) ресурса, загрузка которого была заблокирована политикой безопасности содержимого. Если заблокированный URI получен из другого источника, чем , то заблокированный URI усекается, чтобы содержать только схему, хост и порт
document-uri
Универсальный код ресурса (URI) документа, в котором произошло нарушение.
original-policy
Исходная политика, указанная в HTTP-заголовке.
referrer
Реферер документа, в котором произошло нарушение.
А чтобы больше про это узнать, советую прочесть следующие книги:
Компьютерные сети. 6-е изд. | Уэзеролл Дэвид, Таненбаум Эндрю
Компьютерные сети. Принципы, технологии, протоколы: Юбилейное издание | Олифер Виктор Григорьевич, Олифер Наталья Викторовна5 758
Прислали мне недавно этот мем, я чуть не умер со смеху.😂
Надеюсь, и вам поднимет настроение в новом рабочем дню.
5 758
💻build-your-own-x
Данный репозиторий — рай для тех, у кого практика — это лучший способ обучения, или для тех, кто хочет сделать несколько проектов, чтобы получить опыт. Если кратко, то здесь собраны проекты, относящиеся к таким обширным областям, как Computer Science, дополненная реальность, 3D-рендеринг, базы данных, эмуляторы, игры, операционные системы и многое другое.
💫Ссылка на репозиторий
@programistica // #репозиторий
5 758
Я тут для вас сделал шпаргалку по Big O. Довольно много времени потратил.
А в комментариях вы найдёте ексель файл со шпаргалкой.
Обожаю ексель, мою любовь к нему никто не ослабит
5 758
Big "O" и сложность алгоритмов
Сейчас я вам расскажу о сложности алгоритмов и как её можно описать, так же расскажу о самых распространённых зависимостях между входными данными и временем выполнения алгоритма.
Давайте сперва разберёмся что такое алгоритм, если просто, то это инструкция, которая чётко определена и которую можно использовать для решения определённой задачи.
Например, нам нужно найти факториал некого числа и мы напишем функцию, которую можно вызвать для любого числа, чтобы она нашла его факториал.
def factorial(N):
if N == 0:
return 1
elif N < 0:
return "Ошибка"
else:
return N * factorial(N - 1)
print(factorial(5))
Эта функция и является алгоритмом, ведь она решает определённую задачу.
Теперь давайте разберёмся, что такое Big "O"?
Конкретного определения для этого нет, но Big "O" используется для описания сложности алгоритмов, где сложностью является некое время выполнения алгоритма, которое зависит от входных данных, а так же это может быть память, которая выделяется для хранения алгоритма, которая тоже зависит от входных данных.
а теперь давайте рассмотрим пару видов этих самых зависимостей, для лучшего понимания материала.
О(1)
O(1) описывает алгоритм, который всегда будет выполняться за одно и то же время (или занимать одно и тоже пространство) независимо от набора входных данных.
Давайте приведу пример кода:
array = [2, 4, 5, 7, 8, 9, 10]
print(array[3])
Тут какой-бы не был большой список, код будет выполняться одинаково быстро, ведь мы обращаемся к определённому элементу массива. А вот, например, если мы хотим вывести все элементы массива, то ту уже будет решать и размер списка, но это уже другая закономерность, которую мы сейчас и рассмотрим.
О(N)
Это прямая зависимость сложности от входных данных, если рассматривать это математически, то это y = kx + b, где b != 0.
Примером, как я уже говорил, может служить алгоритм: вывести все элементы массива:
array = [2, 4, 5, 7, 8, 9, 10]
for element in array:
print (element)
В данном случае сложность уже зависит от входящих данных, и Big"O" можно представить, как O(7).
Кстати первый пример с факториалом, тоже относится к O(N). Да и сюда относятся все алгоритмы с повторяющимися итерациями, например, циклы и рекурсии. А вот вложенные циклы относят к другому виду.
O(N²)
O(N²) представляет собой алгоритм, производительность которого прямо пропорциональна квадрату размера входного набора данных. Это характерно для алгоритмов, включающих вложенные итерации по набору данных. Более глубокие вложенные итерации приведут к O(N³), O(N⁴) и т.д.
Вот простой пример:
for i in range(1, 4):
for j in range(1, 4):
print(i * j, end=" ")
print()
вывод: 1 2 3 2 4 6 3 6 9🔥На самом деле видов таких закономерностей намного больше, да и по этой теме много ещё, что есть мне рассказать, так что задавайте вопросы и ставьте реакции, тогда я буду знать, что вам интересно и выпущу продолжение!
5 758
🌐Смотрел я недавно тикток и наткнулся на видео, где автор рассказывает про очень занимательный сайт.
Этот сайт является своего рода путиводителем по миру айти. В него входят: интерактивные занятия, видео и материалы для чтения. А самое главное, что он полностью бесплатен и подает материал в абсолютно логичной последовательности.
А вот и ссылочка на сайт.
А что вам полезного попадалось в тиктоке за последнее время? 😏
@programistica // #service
5 758
Добрый день, мы создали наш дзен канал, на котором будут публиковаться всё наши статьи, несколько более маленьких статей мы выпустили, так же там будут и наши статьи по геймдеву.
Так же можете написать в комментарии, на какие темы хотите увидеть статьи!
А вот ссылка: https://dzen.ru/id/642c39c8bfb59649bd2dbdd9
5 758
💻Angular Material
Компонентная инфраструктура и компоненты Material Design для Angular
💫Ссылка на репозиторий
@programistica // #репозиторий
5 758
💻TiDB
TiDB — это облачная, распределенная, совместимая с MySQL база данных с открытым исходным кодом для эластичного масштабирования и аналитики в реальном времени
💫Ссылка на репозиторий
@programistica // #репозиторий
