Программирование {BookFlow}
16.1K subscribers
1.58K photos
470 videos
145 files
2.1K links
Мы публикуем лекции и книги по программированию, видеоуроки, доклады с IT конференций, новости технологий.

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

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

РКН https://clck.ru/3KoAbH
Download Telegram
This media is not supported in your browser
VIEW IN TELEGRAM
Space Invaders from Scratch. Part 3

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

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

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

#cpp

👉 @Bookflow
👍31👌1
Стек микросервисов для продакшена

👉 @Bookflow
👍6
Media is too big
VIEW IN TELEGRAM
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
👍41👎1
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
👍61🤷‍♂1
Микросервисы vs Монолит

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

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

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

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

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

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

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

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



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

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

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

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

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

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

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

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



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

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



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

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

👉 @Bookflow
Please open Telegram to view this post
VIEW IN TELEGRAM
👍42🤣1
Media is too big
VIEW IN TELEGRAM
Практика языка C.
Константин Владимиров.

На этом занятии мы завершим первый семестр знакомства с основами языка C и разберём многомодульные программы и структуры данных.

00:00 Хеш-таблицы.
15:10 Алгоритм Рабина-Карпа.
22:30 Range-based queries и снова о деревьях.
29:42 Многомодульные программы.
36:30 Структуры данных.
42:40 Литература и задачи.
44:45 Демонстрация многомодульных программ.

источник

👉 @Bookflow
👍3
Быстрый выбор случайной строки из большой таблицы MySQL

Для эффективного извлечения случайной записи из большой таблицы в MySQL стоит избегать команды ORDER BY RAND(). Вместо этого используйте уникальный идентификатор id. Сначала определите максимальное значение id, генерируйте случайное число в пределах этого диапазона и затем получите строку с соответствующим id:


-- Отказываемся от полного сканирования таблицы, затратного по времени!
SELECT * FROM your_table
WHERE id >=
(SELECT FLOOR(1 + RAND() *
(SELECT MAX(id) FROM your_table)))
LIMIT 1;

-- Вместо 'your_table' укажите корректное имя вашей таблицы (если она не носит название 'your_table').


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

#db

👉 @Bookflow
2
👾Самое время собрать свою команду из IT-акул: Открыта регистрация на самый масштабный онлайн-хакатон в мире!

💸 40 млн рублей призового фонда:
— 1 млн рублей — для тех, кто займёт первое место
— 600 тысяч — второе
— 400 тысяч — третье

💼 20 актуальных задач от ведущих компаний страны: Газпромбанк.Тех, VK Tech, Kaspersky, АФЛТ-Системс (Группа «Аэрофлот»), Союзмультфильм, Авито, Итэлма, ОЭЗ «Алабуга», Х5.

14 дней на разработку решений

Принять участие могут:
✔️ граждане РФ и других стран от 18 лет
✔️ специализация: Front / Back / FullStack, Web-разработчика, UX / UI дизайнеры, Product / Project-менеджеры, Data Scientists, Data Engineers, аналитики и другие специалисты
✔️ местоположение — неважно, всё проходит онлайн
Других ограничений нет!

📅 Успейте зарегистрироваться до 18 сентября!

Регистрация по ссылке 👉🏻 https://i.moscow/lct?utm_source=sp&utm_medium=social&utm_campaign=bookflow/?erid=2VtzqwZAxqH

📲 А больше новостей и подробностей — на нашем канале, подписывайтесь: https://t.me/leaders_hack
Ассемблер: рассматриваем каждый байт «Hello, World!». Как на самом деле работают программы на уровне процессора и ОС

Что на самом деле происходит, когда вы запускаете программу? Мы привыкли воспринимать это как данность, но за кадром скрывается целая вселенная — от регистров процессора и системных вызовов Linux до формата ELF и модели памяти процесса. Присоединяйтесь к погружению, где мы прольём свет на каждый байт программы «Hello, World!» и поймём, каким образом ОС её выполняет.

❯ Введение: что будет в статье?
На самом деле, целью статьи является не столько просто написать «Hello, World!» на языке ассемблера, сколько разобрать вещи, которые многие воспринимают как данность, хотя имеют с ними дело каждый миг использования компьютера.

Но прежде чем перейти к написанию «Hello, World!», нужно разобрать некоторые концепции, которые помогут нам в полной мере понять происходящее за сценой. Для понимания изложенного ниже нужно хотя бы знать о существовании Linux и понимать, что делает программа «Hello, World!». Думаю, кем бы вы ни были, но раз вы на Хабре, то с этими проблем не будет :)

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

Мы разберёмся:

1️⃣Что такое регистры процессора и как их использовать;

2️⃣Как происходит процесс компиляции программ;

3️⃣Узнаем что такое системные вызовы и зачем они нужны;

4️⃣Какой формат имеют исполняемые файлы в Linux и каких типов они бывают;

5️⃣Узнаем что такое виртуальное адресное пространство процесса и что в нём хранится;

6️⃣Поймём процесс линковки (компоновки) программ;

7️⃣Сделаем собственную библиотеку и поймём разницу между статическими и динамическими библиотеками;

8️⃣Наконец, с полным пониманием происходящего напишем «Hello, World!» на языке ассемблера.

И начнём мы, как ни странно, с «Hello, World!» на языке C, но прежде проговорим основные вещи.

https://habr.com/ru/companies/timeweb/articles/940310/

👉 @Bookflow
👍4
🚀 Подборка Telegram каналов для программистов

Системное администрирование, DevOps 📌

https://t.me/bash_srv Bash Советы
https://t.me/win_sysadmin Системный Администратор Windows
https://t.me/sysadmin_girl Девочка Сисадмин
https://t.me/srv_admin_linux Админские угодья
https://t.me/linux_srv Типичный Сисадмин
https://t.me/devopslib Библиотека девопса | DevOps, SRE, Sysadmin
https://t.me/linux_odmin Linux: Системный администратор
https://t.me/devops_star DevOps Star (Звезда Девопса)
https://t.me/i_linux Системный администратор
https://t.me/linuxchmod Linux
https://t.me/sys_adminos Системный Администратор
https://t.me/tipsysdmin Типичный Сисадмин (фото железа, было/стало)
https://t.me/sysadminof Книги для админов, полезные материалы
https://t.me/i_odmin Все для системного администратора
https://t.me/i_odmin_book Библиотека Системного Администратора
https://t.me/i_odmin_chat Чат системных администраторов
https://t.me/i_DevOps DevOps: Пишем о Docker, Kubernetes и др.
https://t.me/sysadminoff Новости Линукс Linux

1C разработка 📌
https://t.me/odin1C_rus Cтатьи, курсы, советы, шаблоны кода 1С
https://t.me/DevLab1C 1С:Предприятие 8
https://t.me/razrab_1C 1C Разработчик
https://t.me/buh1C_prog 1C Программист | Бухгалтерия и Учёт
https://t.me/rabota1C_rus Вакансии для программистов 1С

Программирование C++📌
https://t.me/cpp_lib Библиотека C/C++ разработчика
https://t.me/cpp_knigi Книги для программистов C/C++
https://t.me/cpp_geek Учим C/C++ на примерах

Программирование Python 📌
https://t.me/pythonofff Python академия.
https://t.me/BookPython Библиотека Python разработчика
https://t.me/python_real Python подборки на русском и английском
https://t.me/python_360 Книги по Python

Java разработка 📌
https://t.me/BookJava Библиотека Java разработчика
https://t.me/java_360 Книги по Java Rus
https://t.me/java_geek Учим Java на примерах

GitHub Сообщество 📌
https://t.me/Githublib Интересное из GitHub

Базы данных (Data Base) 📌
https://t.me/database_info Все про базы данных

Мобильная разработка: iOS, Android 📌
https://t.me/developer_mobila Мобильная разработка
https://t.me/kotlin_lib Подборки полезного материала по Kotlin

Фронтенд разработка 📌
https://t.me/frontend_1 Подборки для frontend разработчиков
https://t.me/frontend_sovet Frontend советы, примеры и практика!
https://t.me/React_lib Подборки по React js и все что с ним связано

Разработка игр 📌
https://t.me/game_devv Все о разработке игр

Библиотеки 📌
https://t.me/book_for_dev Книги для программистов Rus
https://t.me/programmist_of Книги по программированию
https://t.me/proglb Библиотека программиста
https://t.me/bfbook Книги для программистов

БигДата, машинное обучение 📌
https://t.me/bigdata_1 Big Data, Machine Learning

Программирование 📌
https://t.me/bookflow Лекции, видеоуроки, доклады с IT конференций
https://t.me/rust_lib Полезный контент по программированию на Rust
https://t.me/golang_lib Библиотека Go (Golang) разработчика
https://t.me/itmozg Программисты, дизайнеры, новости из мира IT
https://t.me/php_lib Библиотека PHP программиста 👨🏼‍💻👩‍💻
https://t.me/nodejs_lib Подборки по Node js и все что с ним связано
https://t.me/ruby_lib Библиотека Ruby программиста
https://t.me/lifeproger Жизнь программиста. Авторский канал.

QA, тестирование 📌
https://t.me/testlab_qa Библиотека тестировщика

Шутки программистов 📌
https://t.me/itumor Шутки программистов

Защита, взлом, безопасность 📌
https://t.me/thehaking Канал о кибербезопасности
https://t.me/xakep_2 Хакер Free

Книги, статьи для дизайнеров 📌
https://t.me/ux_web Статьи, книги для дизайнеров

Математика 📌
https://t.me/Pomatematike Канал по математике
https://t.me/phis_mat Обучающие видео, книги по Физике и Математике
https://t.me/matgeoru Математика | Геометрия | Логика

Excel лайфхак📌
https://t.me/Excel_lifehack

https://t.me/mir_teh Мир технологий (Technology World)

Вакансии 📌
https://t.me/sysadmin_rabota Системный Администратор
https://t.me/progjob Вакансии в IT
5👎1🗿1
Коллекция библиотек и фреймворков для C++

Список удивительных фреймворков, библиотек, ресурсов и блестящих вещей на C++ (или C). Вдохновленный удивительными... вещами.

https://github.com/fffaraz/awesome-cpp

👉 @Bookflow
4👍2🔥1
Media is too big
VIEW IN TELEGRAM
Контракты для С++
Тимур Думлер

Контрактное программирование — эффективный подход к написанию более безопасных и корректных программ. Он был успешно реализован в таких языках программирования, как Eiffel и Ada. В стандарте С++ контрактное программирование имеет долгую и сложную историю.

С тех пор как попытка добавить контракты в стандарт C++20 потерпела неудачу, SG21 — рабочая группа для стандартизации контрактов в комитете C++ — активно разрабатывает новую версию этой фичи. Сегодня эта версия контрактов уже практически полнофункциональна и с большой вероятностью будет включена в следующий стандарт C++26.

В этом докладе мы рассмотрели текущий дизайн контрактов для C++26. Обсудили разновидности контрактов (preconditions, postconditions, assertions), возможные режимы проверки, обработку нарушений и многое другое. Рассмотрели, чем текущий дизайн превосходит существующие реализации на макросах и как помогает повысить безопасность и корректность кодовой базы.

источник

👉 @Bookflow
👍3
Карта памяти программы в Windows

Мы в MAX

👉 @Bookflow
🤮3👍2👎2💩1
Media is too big
VIEW IN TELEGRAM
🖥 Основы SQL за час - бесплатно и проще некуда

Содержание:
00:00 - подготавливаем базу
04:36 - выбираем данные SELECT
08:30 - указываем текущую базу данных
09:58 - чувствительность к регистру
12:14 - выбор определенных колонок
15:28 - фильтрация с помощью WHERE
20:59 - фильтрация с И и ИЛИ
26:38 - поиск строки по шаблону
29:18 - свой среди чужих
31:26 - NULL когда данные отсутствуют
34:27 - сортировка данных в SQL
38:37 - добавление записей с помощью SQL запроса
45:36 - обновление данных с помощью SQL
52:32 - удаляем данные из базы с помощью SQL

источник

Мы в MAX

👉 @Bookflow
Please open Telegram to view this post
VIEW IN TELEGRAM
👍2❤‍🔥11👎1
Коллизии хэш-функций и парадокс дней рождения

Как работает хэш-функция? На вход подаются произвольные данные — слово, веб-сайт, файл или ДНК человека — а на выходе получаем 16-теричное число (hex). Очень удобно, чтобы стандартизировать различные объекты, присвоить им уникальные ID, цифровые отпечатки.

К сожалению, отпечатки иногда получаются одинаковыми — происходят коллизии.

Коллизии хэш-функций похожи на парадокс дней рождения, который недавно вызвал бурные дебаты на Хабре и на HN. Почему люди так горячо спорят? Наверное, потому что человеческая интуиция иногда не совпадает с математическими формулами. Другими словами, язык математики ≠ человеческому.

Интересно сравнить разные хэш-функции с математической точки зрения. Насколько часто встречаются «парадоксы»?

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

Мы в MAX

👉 @Bookflow
👍21👎1
Что такое Docker? В чем отличие контейнера от образа?

Docker — программное обеспечение для автоматизации развёртывания и управления приложениями в средах с поддержкой контейнеризации.

Образ — шаблон приложения, который содержит слои файловой системы в режиме "только-чтение".

Контейнер — запущенный образ приложения, который кроме нижних слоев в режиме "только чтение" содержит верхний слой в режиме "чтение-запись".

Мы в MAX

👉 @Bookflow
👍3
Парень сделал онлайн-карту парковочных штрафов Сан-Франциско. Власти отреагировали уже через 4 часа

23-летний инженер Райли Уолц создал онлайн-карту, которая в реальном времени отслеживала всех парковочных инспекторов Сан-Франциско.

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

Карта не просто показывала копов. Она вела рейтинг «самых продуктивных»! Лидер недели, офицер №0435, выписал штрафов на $16,722 всего за два дня. У аутсайдеров в том же отделе — в пять раз меньше.

Власти отреагировали молниеносно — всего через 4 часа доступ к данным прикрыли. Официальная причина: «защита безопасности сотрудников». На самом деле: водители начали уворачиваться от штрафов, и бюджету это не понравилось.

Забавно, что у самого Райли даже нет машины. Он сделал проект после того, как штраф получил его сосед.

https://habr.com/ru/news/950110/

Мы в MAX

👉 @Bookflow
👍20🤯4😁2
💻 12 основных команд Git

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

1️⃣ git init - инициализация нового репозитория
2️⃣ git add - подготовка изменений к коммиту
3️⃣ git commit - создание коммита
4️⃣ git push - отправка изменений в удалённый репозиторий
5️⃣ git pull - получение и слияние изменений с удалённого репозитория
6️⃣ git remote - управление удалёнными репозиториями
7️⃣ git branch - работа с ветками
8️⃣ git fetch - получение данных без слияния
9️⃣ git checkout - переключение между ветками
🔟 git merge - слияние веток
1️⃣1️⃣ git status - проверка состояния репозитория
1️⃣2️⃣ git reset - откат изменений

Сохрани себе, чтобы всегда иметь под рукой!

Мы в MAX

👉 @Bookflow
👍52
MySQL vs MongoDB

Мы в MAX

👉 @Bookflow
👍6
Media is too big
VIEW IN TELEGRAM
Гайд по Git Для Начинающих За 15 Минут

Запутались в командах Git? В этом видео я объясню 9 основных команд, которые вам действительно нужны для работы. Простыми словами, без лишней теории, и с крутыми анимациями. Вы узнаете, как клонировать проекты, делать коммиты, управлять ветками и делиться изменениями с командой. Всё, что нужно, чтобы уверенно использовать Git каждый день!

Таймкоды:
00:00:00 - интро
00:00:34 - Git clone
00:01:58 - Git commit
00:05:08 - Git add
00:07:16 - Git branch
00:08:42 - Git checkout
00:09:29 - Git push
00:11:54 - Git rebase
00:13:30 - Git revert

источник

Мы в MAX

👉 @Bookflow
5👍4🔥1