TGViewer
Channel Public Channel
Программирование {BookFlow}

Программирование {BookFlow}

@bookflow

Мы публикуем лекции и книги по программированию, видеоуроки, доклады с IT конференций, новости технологий.

Группа в https://vk.com/bookflow.

По всем вопросам @evgenycarter

РКН https://clck.ru/3KoAbH
Subscribers
15.6K
Photos
1.7K
Videos
515
Links
2.2K

Showing posts older than #3981 · Back to latest

Older Posts 17 shown
Post #3979 1.79K
Микросервисы vs Монолит

➡️Что такое Монолит?

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

➡️Характеристики монолита:

→ Единая кодовая база и единый процесс развертывания.
→ Все функции и модули взаимосвязаны.
→ Легко начать разработку и первое развертывание.

➡️Преимущества монолита:

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

➡️Недостатки монолита:

→ Сложно масштабировать по мере роста системы.
→ Небольшое изменение может потребовать развертывания всего приложения заново.
→ Трудно большим командам работать независимо, не сталкиваясь с конфликтами.
→ Ошибка в одном модуле может повлиять на всю систему.



➡️Что такое Микросервисы?

Микросервисная архитектура разбивает приложение на небольшие, независимые сервисы, которые взаимодействуют через API (часто HTTP/REST или через очереди сообщений). Каждый сервис отвечает за конкретную бизнес-функцию.

➡️Характеристики микросервисов:

→ Несколько небольших сервисов, у каждого своя кодовая база.
→ Взаимодействие между сервисами через API или систему сообщений.
→ Независимое развертывание и масштабирование каждого сервиса.

➡️Преимущества микросервисов:

→ Легче масштабировать отдельные части системы.
→ Команды могут работать независимо над разными сервисами.
→ Гибкость технологий (разные сервисы могут использовать разные языки и базы данных).
→ Сбой одного сервиса с меньшей вероятностью выведет из строя всю систему.

➡️Недостатки микросервисов:

→ Более сложное проектирование и управление.
→ Необходимы развитые системы мониторинга и коммуникации между сервисами.
→ Увеличивается сложность деплоя и процессов DevOps.



➡️Монолит vs Микросервисы

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



➡️Примеры из реального мира:

→ Монолит: ранние версии Twitter и LinkedIn.
→ Микросервисы: Netflix, Amazon, Uber.

👉 @Bookflow
  • 👍 4
  • ❤ 2
  • 🤣 1
Post #3978 2.13K
Assembler для Windows в Visual Studio

1️⃣Часть первая

В этой статье я покажу как написать приложение для windows на ассемблере. В качестве IDE будет привычная многим Visual Studio 2019 со своими привычными плюшками - подсветка кода, отладка и привычный просмотр локальных переменных и регистров. Собирать приложение будет MASM, а значит, у нас будут и масмовские плюшки. Это будет полноценное оконное приложение с меню, иконкой, отрисовкой, выводом текста и обработкой мыши с клавиатурой.

https://habr.com/ru/articles/763636/


2️⃣Часть вторая — MASM x64 и юникод

Вторая часть рассказа об ассемблере под Windows. Здесь я расскажу про 64-разрядные приложения в Windows, чем отличается MASM 64 от MASM 32, про макросы из MASM 64 SDK, как работать с Юникодом на примере простого консольного REPL'а, а ещё как обойтись без Visual Studio и пользоваться masm просто из командной строки.

https://habr.com/ru/companies/ruvds/articles/884240/


👉 @Bookflow
  • 👍 6
  • ❤ 1
  • 🤷‍♂ 1
Post #3977 2.47K
Neural Networks: Zero to Hero

Курс по нейронным сетям, который начинается с самых основ.

Курс состоит из серии видео на YouTube, где мы вместе пишем код и обучаем нейронные сети. Jupyter-ноутбуки, которые мы создаём в видео, собраны здесь, в папке lectures. У каждого занятия есть набор упражнений, указанный в описании под видео.

Лекции:

1. Подробное введение в нейронные сети и обратное распространение ошибки: создаём micrograd
2. Подробное введение в языковое моделирование: создаём makemore
3. Создание makemore, Часть 2: многослойный перцептрон (MLP)
4. Создание makemore, Часть 3: функции активации и градиенты, BatchNorm
5. Создание makemore, Часть 4: становимся мастером backprop
6. Создание makemore, Часть 5: создаём WaveNet
7. Создаём GPT: с нуля, пошагово, в коде
8. Создаём токенизатор для GPT

https://github.com/karpathy/nn-zero-to-hero/

👉 @Bookflow
  • 👍 4
  • ❤ 1
  • 👎 1
Post #3976 2.38K
Стек микросервисов для продакшена

👉 @Bookflow
  • 👍 6
Post #3975 2.74K
Space Invaders from Scratch. Part 3

В этом посте я сделаю игровой цикл с фиксированным временным шагом, добавлю игрока и инопланетян, а также добавлю анимацию спрайтов.

https://nicktasios.nl/posts/space-invaders-from-scratch-part-3.html

Код к этому посту на Github

#cpp

👉 @Bookflow
  • 👍 3
  • ❤ 1
  • 👌 1
Post #3972 1.99K
Space Invaders from Scratch. Part 1

В этой серии постов я собираюсь создать клон классической аркадной игры Space Invaders на C++, используя всего несколько зависимостей. В этом посте я настрою окно с контекстом OpenGL 3.3, используя GLFW и GLEW как единственные зависимости для этого простого клона.

https://nicktasios.nl/posts/space-invaders-from-scratch-part-1.html

Код к этому посту на Github

#cpp

👉 @Bookflow
  • 👍 3
Post #3970 2.04K
В 2002 году мир математики стал свидетелем исторического момента, когда российский математик Григорий Перельман представил первую из трех новаторских работ, представивших доказательство неуловимой гипотезы Пуанкаре. Эта гипотеза ставила в тупик математиков более столетия, что сделало ее одной из самых сложных нерешенных проблем в этой области.

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

В знак признания своих исключительных достижений Григорий Перельман был награжден престижной медалью Филдса в 2006 году, что считается высшей наградой в математике. Однако реакция Перельмана на эту похвалу была столь же нетрадиционной, как и его математическое путешествие. Совершив беспрецедентный шаг, он отказался от медали Филдса, избегая всеобщего внимания и традиционных атрибутов успеха. Его затворнический и скромный характер стал очевиден миру.

Но отказ Перельмана принять признание на этом не ограничился. Математический институт Клея также пообещал существенное финансовое вознаграждение в один миллион долларов за доказательство гипотезы Пуанкаре. Поступок, который еще больше сбил с толку многих, Перельман отказался и от этой значительной суммы. Его цитировали: «Меня не интересуют деньги или слава; я не хочу, чтобы меня выставляли напоказ, как животное в зоопарке».

Действия Перельмана оставили в мире больше вопросов, чем ответов. Его отказ как от медали Филдса, так и от премии в миллион долларов пролил свет на его глубоко укоренившиеся ценности и приоритеты. Это выдвинуло на первый план математика, движимого не похвалами или богатством, а непоколебимой преданностью делу чистой математики и поиску истины.

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

👉 @Bookflow
  • ❤ 24
  • 👍 6
  • 🫡 2
  • 👎 1
  • 🔥 1
  • 🤯 1
  • 😱 1
Post #3968 2K
Пишем игру для NES на C

Всем привет. Я Даг. Добро пожаловать в мой учебник - Как запрограммировать игру NES на C. Вы можете сделать оригинальную игру Nintendo, которая будет играть на настоящей консоли NES (или эмуляторе).

Давайте поговорим о NES.
Выпущена в Японии (Famicom) в 1983 году, в США — в 1985 году.

Процессор — Ricoh 2A03, 1.79 МГц, клон 6502 (без десятичного режима) со звуковой схемой. Чип 6502 был очень популярен в то время и использовался, например, в Apple II и Atari 2600.

https://nesdoug.com/

👉 @Bookflow
  • 👍 9
  • 🔥 1
  • 🎉 1
Post #3965 2.6K
Promises Training

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

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

https://github.com/henriqueinonhe/promises-training

👉 @Bookflow
  • 👍 4
Post #3964 2.24K
🔥 СВЕЖИЙ АД, ПРЯМО В ТВОЙ МОНИТОР! 💀

Они думали, что ад остался на Марсе…
Они ошибались.
DOOM возвращается — теперь в виде лёгкого, как бензопила в руках Мародёра, и безжалостного, как ракета в лицо кибердемону, порта на Go.
Никаких платформенных цепей. Никакого CGo. Только чистая ярость и кросс-компиляция, рвущая реальность на куски.

🔸 Запускается везде, где бьётся сердце Go
🔸 Минимум балласта — только стандартная библиотека Go
🔸 Полная линейка ада: DOOM, DOOM II, Ultimate DOOM, Final DOOM
🔸 WAD — твой пропуск в бездну: приноси своих демонов
🔸 Память в бронежилете: защита от переполнений буфера (но не от зубов какодемона)
🔸 Оружие массового поражения — кросс-компиляция под любую цель

Подготовься.
Натяни броню.
И перезаряди BFG…

https://github.com/AndreRenaud/gore

👉 @Bookflow
  • 🔥 7
  • 👍 2
Post #3962 2.24K
Сессии, куки, JWT, токены, SSO и OAuth 2.0

👉 @Bookflow
  • 👍 10
Post #3961 2.21K
Carfinger

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

- Установите необходимые libarary .Mediapipe .opencv
- Запустите на python 3.10 запустите любую игру в жанре автогонок.
- Запустите редактор python от имени администратора запустите файл game_control.py

https://github.com/ayaankhan28/Carfinger

👉 @Bookflow
  • 👍 5
  • 👀 1
Post #3960 2.09K
Давай программировать стек TCP/IP. Part 1: Ethernet & ARP

Написание собственного стека TCP/IP может показаться сложной задачей. Действительно, за более чем тридцать лет существования TCP накопилось множество спецификаций. Однако основная спецификация на удивление компактна — важные части включают разбор заголовков TCP, автомат конечных состояний, контроль перегрузок и вычисление времени ожидания повторной передачи.

Наиболее распространенные протоколы второго и третьего уровней — Ethernet и IP, соответственно, — в сравнении с TCP гораздо проще. В этой серии статей мы реализуем минимальный стек TCP/IP в пространстве пользователя для Linux.

Цель этих публикаций и создаваемого ПО исключительно образовательная — углубленное изучение сетевого и системного программирования.

TUN/TAP устройства
Чтобы перехватывать сетевой трафик низкого уровня из ядра Linux, мы будем использовать TAP-устройство Linux. Если кратко, TUN/TAP устройства часто применяются приложениями в пространстве пользователя для работы с трафиком на уровне L3 и L2 соответственно. Популярным примером является туннелирование, когда пакет инкапсулируется внутри полезной нагрузки другого пакета.

Преимущество TUN/TAP устройств в том, что их легко настроить в программе в пространстве пользователя, и они уже используются во множестве программ, таких как OpenVPN.

Поскольку мы хотим строить стек сетевого взаимодействия, начиная со второго уровня, нам потребуется TAP-устройство. Мы создаем его следующим образом:


/*
* Taken from Kernel Documentation/networking/tuntap.txt
*/
int tun_alloc(char *dev)
{
struct ifreq ifr;
int fd, err;

if( (fd = open("/dev/net/tap", O_RDWR)) < 0 ) {
print_error("Cannot open TUN/TAP dev");
exit(1);
}

CLEAR(ifr);

/* Flags: IFF_TUN - TUN device (no Ethernet headers)
* IFF_TAP - TAP device
*
* IFF_NO_PI - Do not provide packet information
*/
ifr.ifr_flags = IFF_TAP | IFF_NO_PI;
if( *dev ) {
strncpy(ifr.ifr_name, dev, IFNAMSIZ);
}

if( (err = ioctl(fd, TUNSETIFF, (void *) &ifr)) < 0 ){
print_error("ERR: Could not ioctl tun: %s\n", strerror(errno));
close(fd);
return err;
}

strcpy(dev, ifr.ifr_name);
return fd;
}



https://www.saminiir.com/lets-code-tcp-ip-stack-1-ethernet-arp/

#cpp

👉 @Bookflow
  • 👍 4
  • ❤ 1
Post #3959 2.08K
📌10 обязательных алгоритмов для работы с графами

1. Поиск в глубину (DFS)
2. Поиск в ширину (BFS)
3. Топологическая сортировка
4. Алгоритм объединения-поиска (Union Find)
5. Обнаружение циклов
6. Поиск связных компонентов
7. Проверка на двудольность графа
8. Заливка области (Flood Fill)
9. Минимальное остовное дерево
10. Кратчайший путь

♻️ Поделись, чтобы помочь другим подготовиться!

👉 @Bookflow
  • 👍 4
Post #3958 2.71K
📌7 распространённых асимптотических сложностей алгоритмов

1. O(1) — Константное время

- Время выполнения не зависит от размера входных данных.
- Пример: доступ к элементу массива по индексу.

2. O(log n) — Логарифмическое время

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

3. O(n) — Линейное время

- Время выполнения растёт прямо пропорционально размеру входных данных.
- Пример: поиск элемента в массиве перебором всех элементов.

4. O(n log n) — Линейно-логарифмическое время

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

5. O(n²) — Квадратичное время

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

6. O(2ⁿ) — Экспоненциальное время

- Время выполнения удваивается с каждым новым элементом во входных данных. Такие алгоритмы становятся непрактичными для больших входных размеров.
- Пример: генерация всех подмножеств множества.

7. O(n!) — Факториальное время

- Время выполнения пропорционально факториалу размера входных данных.
- Пример: генерация всех перестановок множества.

♻️ Сделай репост, чтобы помочь другим.

👉 @Bookflow
  • 👍 8
  • ❤ 4
Post #3957 2.21K
Детальный обзор полей Галуа

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

Этими словами заканчивалось письмо Эвариста Галуа, написанное для своего друга Огюста Шевалье за два дня до его смерти от полученных на дуэли ран на 21 году жизни. Ни Якоби, ни Гаусс в его теоремах не разобрались, зато спустя 15 лет разобрался Жозеф Лиувилль и опубликовал работы Галуа, ставшие впоследствии фундаментом современной алгебры, известные сейчас как теория Галуа. В статье расскажу про одну из частей этой теории - поля Галуа, получившая настолько повсеместное применение в криптографии и избыточном кодировании, что Intel и AMD выпустили набор процессорных расширений для эффективной реализации операций над этими полями.

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

https://habr.com/ru/articles/916740/

👉 @Bookflow
  • ❤ 4
  • 👍 4
Older posts →
Threads Profile ViewerView any public Threads profile without an account.Open ThreadLook →Writing with AI? Make it sound human.Metric37 rewrites AI drafts so they read naturally. Free AI detector, 1,500 words free.Try Metric37 →