Программирование {BookFlow}
16.2K subscribers
1.58K photos
468 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
Copycolors

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

Он построен на Rust и по сути основан на реализации алгоритма Colors Thief.

https://github.com/AbdoulMa/copycolors

👉 @Bookflow
👍3
Челлендж по обработке миллиарда строк на Go: от 1 минуты 45 секунд до 4 секунд

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

Я немного опоздал, соревнования проводились в январе. И на Java. Меня не особо интересует Java, зато давно интересует оптимизация кода на Go.

Этот челлендж был очень прост: обработать текстовый файл названий метеорологических станций и температур, и для каждой станции вывести минимальное, среднее и максимальное значение. Чтобы упростить задачу, было ещё несколько ограничений, однако я проигнорировал те, что относятся только к Java.

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

#golang

👉 @Bookflow
👍7🤝1
Чем синхронный сервер отличается от асинхронного?

Вопрос может быть сформулирован как «сравните Jetty и Netty», или «зачем нужен Spring WebFlux».

Большинство современных Java web-серверов синхронные. Это значит, что для каждого пришедшего HTTP-запроса выделяется отдельный поток. Даже если такой поток переиспользуется с помощью пула, он остается занятым до конца обработка запроса.

Таким образом, если каждый запрос выполняется одну секунду, то при всего лишь 2000 запросов в секунду сервер расходует 2000 потоков. Потоки в ОС – ограниченный ресурс, и не важно как сконфигурирован ваш сервер – в какой-то момент производительность резко просядет.

Альтернативное решение – асинхронные сервера. В них для потоков обработки HTTP-запросов используется work stealing. В широком смысле, вызовы асинхронных функций не блокируют выполнение, а их результат вместо return value возвращается параметром коллбэка. В Java этот результат зачастую возвращается в виде объекта Future.

Чтобы вся обработка запроса стала действительно асинхронной, необходимо также избавиться от блокирующих операций. Иначе преимущество подхода с work stealing выродится в простой пул потоков. Блокирующая работа с файлами и сетью должна быть заменена на NIO, а для БД должен быть использован асинхронный драйвер.

#Java

👉 @Bookflow
👍5
This media is not supported in your browser
VIEW IN TELEGRAM
⚛️ Шпаргалка по UseEffect

Думать об useEffect как о методе жизненного цикла.

Думаем об useEffect как о механизме синхронизации данных (state/props) с системами, которые не контролируются React.

#react

✍️ @Bookflow
👍2
Под капотом Python. Тонкости популярных конструкций with и contextmanager

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

https://habr.com/ru/companies/beeline_cloud/articles/749580/

#Python

👉 @Bookflow
👍1
Переходим на Rust — язык, который сочетает производительность и безопасность.

Почему разработчики выбирают Rust?

➡️ Высокая производительность: Создавайте быстрые приложения с минимальными затратами ресурсов, как на C и C++, но с большей безопасностью.
➡️ Безопасная работа с памятью: Забудьте о проблемах с утечками памяти и гонками данных — cистема типов, в совокупности с принципами владения и заимствования, гарантируют надёжность.
➡️ Конкурентное программирование без риска: Используйте многопоточность без страха столкнуться с гонками данных.
➡️ Широкая экосистема: Огромное сообщество и тысячи готовых библиотек помогут вам быстро внедрить Rust в ваши проекты.
➡️ Совместимость с С ABI: Улучшайте существующие проекты, добавляя участки кода на Rust для оптимизации производительности.
➡️ Будущее веба с WebAssembly: Разрабатывайте высокопроизводительные веб-приложения с помощью Rust и WebAssembly.

Практикуйтесь сразу с первого урока вместе с автором курса и опытным наставником в нашем тренажере:

Вам доступны первые 3 урока с практикой

Урок #1 | Выбор IDE, установка окружения и первый "hello world"
Соберете и запустите первый "hello world" проект.

Урок #2 | Базовый синтаксис
Научитесь писать Rust код в процедурном стиле. Изучите типы данных,встроенные и пользовательские типы, функции и переменные

Урок #3 | Владение и заимствование
Используете механизмы механизмы управления памятью и ссылками. Решите несколько задач на владение, заимствование и слайсы.

🚀 Получить демо-доступ к первым 3 урокам

Реклама. Информация о рекламодателе
Please open Telegram to view this post
VIEW IN TELEGRAM
🔥2💩1
Примеры исходного кода C++

Эта страница содержит примеры исходного кода функций стандартной библиотеки программирования C++.

https://www.sourcecodeexamples.net/p/cpp-source-code-examples.html

#cpp

👉 @Bookflow
👍3
MS-DOS v1.25, v2.0, v4.0 Source Code

Оригинальные исходники MS-DOS 1.25, 2.0 и 4.0 для справочных целей

Это репо содержит оригинальные исходные коды и скомпилированные двоичные файлы для MS-DOS v1.25 и MS-DOS v2.0, а также исходные коды для MS-DOS v4.00, совместно разработанной IBM и Microsoft.

Файлы MS-DOS v1.25 и v2.0 были первоначально выложены в общий доступ в Музее компьютерной истории 25 марта 2014 года и (пере)публикуются в этом репо, чтобы облегчить их поиск, ссылки на них в других работах, а также чтобы дать возможность исследовать и экспериментировать тем, кто интересуется ранними операционными системами для ПК.

https://github.com/microsoft/MS-DOS/

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

Системное администрирование 📌
https://t.me/sysadmin_girl Девочка Сисадмин
https://t.me/srv_admin_linux Админские угодья
https://t.me/linux_srv Типичный Сисадмин

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С

Программирование 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 академия. Учи Python быстро и легко🐍
https://t.me/BookPython Библиотека Python разработчика
https://t.me/python_real Python подборки на русском и английском
https://t.me/python_360 Книги по Python Rus

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/books_reserv Книги для программистов

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

Программирование 📌
https://t.me/bookflow Лекции, видеоуроки, доклады с IT конференций
https://t.me/coddy_academy Полезные советы по программированию
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 программиста

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

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

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

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

Английский 📌
https://t.me/UchuEnglish Английский с нуля

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

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

https://t.me/tikon_1 Новости высоких технологий, науки и техники💡
https://t.me/mir_teh Мир технологий (Technology World)

Вакансии 📌
https://t.me/sysadmin_rabota Системный Администратор
https://t.me/progjob Вакансии в IT
Konf

Простейший загрузчик конфигураций для Go, который читает/смотрит из файла, env, флага и облаков (AWS, Azure, GCP).

Основные возможности:

konf.Unmarshal для чтения конфигурации в любой тип объекта.
konf.OnChange для регистрации колбэков при изменении конфигурации.
konf.Explain для понимания, откуда загружается конфигурация.
Различные провайдеры для загрузки конфигурации из облаков (AWS, Azure и GCP).
Zero dependencies в core модуле, который поддерживает загрузку конфигурации из переменных окружения, флагов и встроенной файловой системы.

https://github.com/nil-go/konf

#golang

👉 @Bookflow
👍4
Совет по Java 💡

С помощью библиотеки Jinq (https://jinq.org) вы можете писать запросы к базам данных, используя потоки Java. Она обеспечивает стиль запросов, схожий с известной библиотекой .NET LINQ. Конечно, вы можете легко интегрировать Jinq с Spring Boot.

#java #jpa #streams
👉 @Bookflow
👍4🤔1
Go-like каналы на C++

Каналы (channels, pipes) – это удобная абстракция для построения приложений, работающих в многопоточной среде. Они используются для передачи сообщений между потоками и, одновременно с этим, как средство синхронизации потоков. Я буду ссылаться на "Go-style channels", т.к. на мой взгляд, важная особенность каналов в языке GO – это возможность их мультиплексировать.

Реализации каналов на языке C++, конечно же, есть, например, в библиотеке boost::fibers, можно найти реализацию двух видов каналов. В документации boost::fibers можно найти описания способов мультиплексирования, правда не самих каналов, но и к ним можно применить подобную технику.

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

#cpp

👉 @Bookflow
👍3
Benedict

Если вы столкнулись с трудностями при работе со словарями в Python, то benedict может стать тем решением, которое вы искали.

benedict наследуется от встроенного типа dict, что означает, что он полностью совместим с существующими словарями и может быть использован в качестве замены в большинстве случаев.

Одной из ключевых особенностей benedict является поддержка keylists и keypaths. Это упрощает доступ к значениям в сложных словарях и работу с ними без необходимости вручную копаться во вложенных уровнях.

#Python

👉 @Bookflow
🤡4👍3😁2
This media is not supported in your browser
VIEW IN TELEGRAM
Cassowary

Запускайте приложения Windows в Linux как родные, используйте приложения linux для запуска файлов, расположенных в windows vm, без необходимости установки приложений на vm. С простым в использовании графическим интерфейсом конфигурации

Cassowary поддерживает:
Запуск приложений Windows, как если бы они были родными приложениями
Открытие файлов с хоста Linux непосредственно в приложениях Windows
Использование приложений Linux для открытия файлов, находящихся на виртуальной машине Windows.
Обеспечение легкого доступа между гостевой и хостовой файловыми системами
Простая в использовании утилита настройки
Создание программы запуска приложений для Windows-приложений
Автоматическое приостановление работы ВМ, когда не используется приложение Windows, и автоматическое возобновление ее работы при необходимости (только для virt-manager)

https://github.com/casualsnek/cassowary

👉 @bookflow
👍3