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

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

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

РКН https://clck.ru/3KoAbH
Download Telegram
Дорожная карта навыков разработчика на C++

Джеймс Гослинг как‑то сказал, что Java — это C++, из которого убрали все пистолеты, ножи и дубинки, однако практика показывает, что «ножи и дубинки» становятся классным инструментом в руках опытных разработчиков. В общем, немалая часть проклятий в адрес C++ объясняется элементарным «вы просто не умеете его готовить». Мы в «Лаборатории Касперского» умеем готовить «плюсы» и поэтому любим их. C++ — низкоуровневый язык, который позволяет работать с железом и писать быстрый код и при этом содержит массу возможностей. В экосистеме «плюсов» куча проработанных паттернов, best practices и готовых библиотек под разные задачи. Язык динамично развивается — но сохраняет обратную совместимость.

В этой статье мы с помощью карты покажем, какие навыки и знания нужны разработчику на C++. Естественно, разбирать путь развития «плюсистов» будем на собственном примере — тем более что у нас в «Лаборатории Касперского» много очень разных проектов с отличающимися задачами. Однако наша карта по большей части универсальна и будет полезна всем, кто хочет развиваться в разработке на C++.

https://habr.com/ru/specials/726724/

👉 @bookflow
👍8🤔1🤣1
Есть ли жизнь на arm'е?

Предвосхищая вопрос о целесообразности замены macOS'и на Linux. Кто‑то любит macOS, кто Linux, а кто‑то и Windows. Я люблю Linux и хочу им пользоваться. Для меня он субъективно удобнее и объективно лучше подходит под задачи. На момент устаревания моего Dell XPS 13 с Core i7 в четыре потока, M1 Pro был лучшим выбором. Наверное все, что говорят про эти ноуты — правда. Железяка и в самом деле превосходна, за подобные деньги — лучший выбор. Но. Полностью разделяю боль и гнев авторов статей касательно macOS и юзабилити от «Think Different», самому есть что дополнительно накинуть, о чем авторы не упоминали. После покупки, всерьез хотел продать, предлагал знакомым ИТшникам, но никто не решался. Выставлять как БУ'шный и терять в деньгах казалось сомнительно, т.к. аналоги от других производителей стоят дороже и будут хуже по производительности/автономности. Начали посещать мысли поставить Linux, но на тот момент невозможно было подключить внешний монитор и в целом проект был сырым, поэтому пришлось привыкать к macOS. Прошло полтора года.

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

👉 @bookflow
👍3🤯2
Сравнение алгоритмов ограничения частоты запросов

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

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

original https://smudge.ai/blog/ratelimit-algorithms

👉 @bookflow
👍1
Что разработчик никогда не должен делать

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


1) Быть перфекционистом
2) Просить время на рефакторинг
3) Не понимать, что такое «легаси-код»
4) Считать функциональное программирование лучшим
5) Слепо следовать «лучшим практикам»
6) Справляться с трудностями в одиночку
7) Впадать в неконтролируемый «поток»
8) Не двигать своим телом
9) Забывать, как круто быть программистом
10) Быть «кодером», а не инженером

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

👉 @bookflow
👍8👎2😁1
Compiler Explorer — уникальный проект для исследования компилируемого кода

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

CE — потрясающий инструмент. Если вы с ним не знакомы, то прервите чтение и перейдите на веб-сайт CE, где вы увидите примерно такой экран:

Предупреждение: вы забираетесь в «кроличью нору», на которую можете потратить несколько часов своего времени.

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

original https://thechipletter.substack.com/p/compiler-explorer

👉 @bookflow
👍51
This media is not supported in your browser
VIEW IN TELEGRAM
Почему для меня так важен алгоритм CORDIC

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

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

Начнём с очевидного: если вы работаете на производительном оборудовании, то вам всё это не нужно. Настоящая техника предназначена именно для встраиваемых средств, в особенности малопроизводительных микроконтроллеров и ПЛИС (программируемая логическая интегральная схема). И даже в этом случае есть вероятность, что будут доступны более мощное оборудование или периферийные устройства, способные работать «быстрее», но здесь важно учитывать, что полезность измеряется не только скоростью.

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

original https://github.com/francisrstokes/githublog/blob/main/2024/5/10/cordic.md

👉 @bookflow
👍5
Media is too big
VIEW IN TELEGRAM
20 Величайших Программистов Всех Времен

Именно на плечах этих гигантов мы и стоим сегодня. В этом видео я предлагаю ознакомитсья с краткой биографией 20-ти выдающихся программистов и вообще деятелей компьютерных наук без которых не было бы нашей мощнейшей и прекрасной индустрии.

Гвидо Ван Россум
Дональд Эрвин Кнут
Джон Кармак
Джеймс Артур Гослинг
Никлаус Вирт
Дейвид Паттерсон
Алан Кей
Джон Маккарти
Стив Возняк
Эдгар Кодд
Томас Куртз
Грейс Хоппер
Джон Бакус
Кен Томпсон
Билл Гейтс
Брайан Керниган
Бйорн Строуструп
Линус Торвальдс
Тим Бернерс Ли
Денис Ритчи
Алан Тьюринг

👉 @bookflow
👏7👎5👍4🤔1
5 механизмов межпроцессного взаимодействия (IPC)

IPC — это фундаментальная концепция в *nix-подобных ОС, которая позволяет процессам обмениваться данными.

1️⃣ Pipe — механизм межпроцессного взаимодействия, использующий общий файловый дескриптор, что позволяет одному процессу записывать данные, которые может прочитать другой процесс.
cat /var/log/syslog | grep 'error' | less
2️⃣ Message Queue: позволяют процессам обмениваться сообщениями в порядке FIFO. Она полезна в сценариях, где требуется асинхронное взаимодействие.
3️⃣ Signal: используется для уведомления процесса о наступлении определённого события.
4️⃣ Semaphore: используется для контроля доступа к общему ресурсу несколькими процессами.
5️⃣ Shared Memory: позволяет обеспечить нескольким процессам доступ к одному и тому же пространству памяти.

👉 @bookflow
👍31
This media is not supported in your browser
VIEW IN TELEGRAM
🧊 Робот от компании Mitsubishi Electric собрал кубик Рубика за 0,305 секунды

Человеческий рекорд — 3,13 секунды.

👉 @mir_teh
Please open Telegram to view this post
VIEW IN TELEGRAM
👍63
This media is not supported in your browser
VIEW IN TELEGRAM
Как передать значение shadcn/ui Date Picker в server action в Next.js

👉 @bookflow
👍2
Все мои детальки: переход на отечественные микроконтроллеры

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

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

👉 @bookflow
👍4👎1
Трюк из линейной алгебры для быстрого нахождения чисел Фибоначчи

Я участвовал в онлайн-группе чтения книги Thirty-three Miniatures: Mathematical and Algorithmic Applications of Linear Algebra математика Иржи Матушека. Это самая нетрадиционная книга о математике, с которой мне приходилось сталкиваться. Первые две главы посвящены способам быстрого нахождения чисел Фибоначчи. Традиционный, или итеративный метод нахождения чисел Фибоначчи (основанный на хранении промежуточных значений в памяти), который мы изучали на курсах программирования, линеен по времени. Но в книге представлена методика их вычисления приблизительно с логарифмической временной сложностью. Возможно, кто-то из вас знает эту методику, но для меня она была новой, и я решил, что ею стоит поделиться.

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

original https://blog.codingconfessions.com/p/a-linear-algebra-trick-for-fibonacci-numbers

👉 @bookflow
👍5
72 вопроса и ответа на интервью по SQL (ENG)

Почти все крупные представители технологической индустрии, такие как Uber, Netflix, Airbnb и т.д., используют SQL. В этом блоге перечислены все лучшие вопросы для собеседования по SQL.

https://intellipaat.com/blog/interview-question/sql-interview-questions/

#SQL

👉 @bookflow
👍3🤷‍♂2
Как потреблять API с ограничением по RPS в .NET приложениях

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

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

Но теперь на Хабре есть эта статья, которая научит отправлять запросы из HttpClient так, чтобы не получать 429 Too Many Requests.

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

👉 @bookflow
👍3
Вы все еще пишете многопоточку на C++ с ошибками синхронизации?

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

Демонстрация идеи будет проходить на живых примерах кода на современном C++. Большинство описанных решений я применял сначала на собственных проектах, а теперь часть этих подходов уже используется в нашей собственной микроядерной операционной системе «Лаборатории Касперского» (KasperskyOS).

https://habr.com/ru/companies/kaspersky/articles/805365/

👉 @bookflow
👍3🥱1
Изучайте Full Stack Development и получайте бесплатные сертификаты

🔸HTML and CSS
https://freecodecamp.org/learn/2022/responsive-web-design/

🔸JavaScript
https://scaler.com/topics/course/javascript-beginners/

🔸Python
https://cs50.harvard.edu/python/

🔸 MySQL
https://scaler.com/topics/course/sql-using-mysql-course/

🔸 MongoDB
https://learn.mongodb.com/learning-paths/introduction-to-mongodb

🔸 Node.js
https://scaler.com/topics/course/nodejs/

🔸 React
https://upgrad.com/free-courses/

🔸 Java
https://scaler.com/topics/course/java-beginners/

🔸 Git
https://learn.microsoft.com/training/paths/intro-to-vc-git/

🔸 DSA
https://learn.saylor.org/course/view.php?id=66

🔸Meta Back-End Developer Professional Certificate
https://www.coursera.org/professional-certificates/meta-back-end-developer

🔸Become Full Stack Developer
https://mygreatlearning.com/academy/learn-for-free/courses/become-full-stack-developer

🔸Full-Stack Development 101: What is Full-Stack Development ?
https://simplilearn.com/learn-full-stack-development-free-skillup

🔸Full Stack Website Development : Technologies All in One
https://udemy.com/course/full-stack-website-development-technologies/

🔸CS50's Web Programming with Python and JavaScript
https://edx.org/learn/web-development/harvard-university-cs50-s-web-programming-with-python-and-javascript

🔸 Front End Development - HTML
https://mygreatlearning.com/academy/learn-for-free/courses/front-end-development-html

🔸Build a Quiz App with HTML, CSS, and JavaScript
https://udemy.com/course/build-a-quiz-app-with-html-css-and-javascript/

🔸 Python
https://learnpython.org

👉 @bookflow
👍4👎1
This media is not supported in your browser
VIEW IN TELEGRAM
10 основных компонентов веб-приложения в продакшене

🔵- Все начинается с конвейеров CI/CD, которые разворачивают код на серверных инстансах. Такие инструменты, как Jenkins и GitHub, помогают в этом.
🔵- Пользовательские запросы исходят из веб-браузера. После разрешения DNS запросы достигают серверов приложений.
🔵- Балансировщики нагрузки и обратные прокси (такие как Nginx и HAProxy) равномерно распределяют пользовательские запросы между серверами веб-приложений.
🔵- Запросы также могут обслуживаться сетью доставки контента (CDN).
🔵- Веб-приложение взаимодействует с бекенд-сервисами через API.
🔵- Бекенд-сервисы взаимодействуют с серверами баз данных или распределенными кэшами для предоставления данных.
🔵- Ресурсоемкие и длительные задачи отправляются рабочим процессам с использованием очереди заданий.
🔵- Сервис полнотекстового поиска поддерживает функциональность поиска. Здесь могут помочь такие инструменты, как Elasticsearch и Apache Solr.
🔵- Инструменты мониторинга (такие как Sentry, Grafana и Prometheus) хранят логи и помогают анализировать данные, чтобы обеспечить правильную работу системы.
🔵- В случае проблем службы оповещения уведомляют разработчиков через платформы, такие как Slack, для быстрого решения.

👉 @bookflow
Please open Telegram to view this post
VIEW IN TELEGRAM
👍3🔥3
Совет по java💡

Обычно при сортировке в Spring Data мы указываем свойство, по которому хотим отсортировать, как строку. Однако существует класс TypedSort, который дает нам возможность передавать функцию в качестве параметра для сортировки. Это повышает безопасность типов в нашем коде.

#java

👉 @bookflow
👍5