НЕЙРОНАВТЫ 🤖 | Нейросеть & IT
Open in Telegram
Мы публикуем лекции и книги по программированию, видеоуроки, доклады с IT конференций.
Show more1 840
Subscribers
No data24 hours
-27 days
-1130 days
Posts Archive
Опыт создания UI библиотеки на C++
Началось все почти два года назад в декабрe, наш основной проект (видео мессенджер) использовал WTL для Windows и GTKmm для Linux. Поддержки мака не было. Огромной неприятностью было тащить два идентичных клиента, которые, по идее, должны делать все строго одно и тоже. Разумеется, это никогда не получалось. От мысли что надо бы сделать ещё один нативный клиент для мака начинался нервный тик...
На резонный вопрос - почему сразу делалось не на Qt могу лишь ответить, что это связано с, так скажем, гурманскими предпочтениями и, отчасти, с любовью к монолитным exe. Да и не требовалось на старте ничего кроме винды.
В течение шести лет жизни с двумя кодовыми базами одного и того же, неспешно подбирались легковесные UI библиотеки написанные хотя бы в стиле C++11.
Надо сказать, что мы активно используем boost и всей душой, как можем, его любим...
В 2021 году видимо Гугл работал плохо или звёзды так сошлись, но не нашлось ничего стоящего. Все что попадалось - основанные на рен...
Создаем платежную карту с эффектом переворачивания, используя только HTML и CSS 🚀
https://github.com/atherosai/ui/tree/main/payment-card-02
#frontend
Как IndVarSimplification применяет математику в вашем коде
Хочу поделиться своей историей расследования одной довольно необычной компиляторной оптимизации. Необычна она в том плане, что для нее производятся довольно нетривиальные математические вычисления. Приступим!
https://habr.com/ru/articles/738272/
#rust
Что такое LA? В каких единицах измеряется?
LA (load average) — параметр, определяющий среднюю нагрузку на систему за период времени (1 мин, 5 минут, 15 минут). Изменяется в количестве задач на одно ядро процессора. На нагрузку системы также влияет количество задач ввода-вывода и задержка сети. Также влияние на расчета LA оказывает: 1. Технология Hyper-Threading, которая делит одно физическое ядро на 2 логических, 2. Технология Turbo Bust, которая позволяет разгонять тактовую частоту процессора и работать на частоте выше заявленной, т.е. выше номинальной частоты (время на обработку одной задачи уменьшается).
#devops
FormStream
FormStream - это потоковый парсер Golang для многокомпонентных данных, используемый в основном при отправке веб-форм и загрузке файлов.
Особенности
Обеспечивает потоковый парсер, избавляя от необходимости хранить целые файлы в памяти или на диске в большинстве случаев.
Отличается крайне низким потреблением памяти.
Обеспечивает высокую производительность, значительно превосходящую традиционные методы.
https://github.com/mazrean/formstream
#golang
+3
Mplcyberpunk
Пакет на языке Python поверх matplotlib для создания графиков в стиле "киберпанк" с помощью 3 дополнительных строк кода.
https://github.com/dhaitz/mplcyberpunk
#github
Я сделал C++ версию функции Python print()
Мне нравится функция Python print(obj...), поскольку она может выводить переменные любого типа: числа, строки, массивы и объекты, а также полезна для отладки.
В последнее время я занимаюсь соревновательным программированием, но эта функция помогает мне отлаживать и там.
https://dev.to/philip82148/i-made-a-c-version-of-consolelog-o88
#cpp
Prometheus и его хранилище: Архитектура, проблемы и решения
Эта серия из двух статей посвящена мониторингу. В первой части рассказывается о накоплении множества различных показателей в одном месте, обработке разрешений для различных аспектов этих показателей и хранении больших объемов данных. Во второй части мы сосредоточимся на выборе систем мониторинга, основываясь на кратком примере «путешествия» вымышленной компании в борьбе с постоянным расширением системы мониторинга и ростом инфраструктуры.
https://blog.palark.com/prometheus-architecture-tsdb/
#Prometheus
ISP Data Pollution
Этот скрипт предназначен для генерации случайного трафикадля, случайных веб-просмотров, чтобы скрыть данные от провайдера и сделать их фактически бесполезными, затуманивая реальные данные о просмотре.
https://github.com/essandess/isp-data-pollution/
#github
Что такое Uniform initialization? Aggregate initialization?
Uniform initialization, введенная в C++11, позволяет использовать единый синтаксис для инициализации переменных и объектов, начиная от примитивных типов до агрегатов¹. Другими словами, она вводит инициализацию скобками, которая использует фигурные скобки {} для заключения значений инициализатора. Синтаксис выглядит следующим образом:
type var_name {arg1, arg2, ....arg n}.
Aggregate initialization - это форма инициализации списком для массивов или типов класса (часто структур или объединений), которые имеют: нет приватных или защищенных членов, нет пользовательских конструкторов, кроме явно заданных или удаленных конструкторов . Это позволяет напрямую инициализировать элементы агрегатов. Для этого мы предоставляем список инициализаторов в качестве инициализатора, который представляет собой список значений, разделенных запятыми.
Например, если у вас есть структура с несколькими членами:
struct Employee {
int id {};
int age {};
double ...Многопоточное приложение React с использованием useWorker
Если мы выполняем какую-либо требующую больших затрат задачу, она будет блокировать взаимодействие с пользовательским интерфейсом. И пользователю придется ждать, пока она завершится, чтобы выполнить любое другое действие, что создает плохое впечатление от UX.
https://dev.to/nilanth/multi-threaded-react-app-using-useworker-gf8
#react
🖥 DrawDB
Бесплатный, простой и интуитивно понятный инструмент для проектирования баз данных и генератор SQL.
https://github.com/drawdb-io/drawdb
#db
💻 Обучение фулстек-разработке веб-сервиса с нуля
Введение в обучение фулстек-разработке веб-сервиса на TypeScript, Reaсt, Node.js
Урок 0. Обзор архитектуры и фичей учебного проекта
Урок 1. Как проходит обучение
Урок 2. Создание графического прототипа (TypeScript, Node.js, React)
Урок 3. Формирование и оценка бэклога проекта
Урок 4. Установка программ для разработки
Урок 5. Мастеркласс по VSCode
Урок 6. Создание React приложения с помощью Vite
Урок 7. Знакомство с Git и GitHub
Урок 8. HTML теги
Все 68 видео на youtube
#fullstack
Kube-Proxy: Что это такое и как это работает
Сетевое взаимодействие - важнейшая часть Kubernetes. Понимание того, как работают различные сетевые компоненты, поможет вам правильно спроектировать и настроить их для вашего приложения.
За сетью Kubernetes скрывается компонент, который работает под капотом. Он преобразует ваши службы в удобные сетевые правила. Этот компонент называется Kube-Proxy.
В этой статье мы покажем, как работает Kube-Proxy. Мы объясним, как происходит процесс создания служб. И покажем несколько примеров правил, которые создает Kube-Proxy.
https://medium.com//kube-proxy-what-is-it-and-how-it-works-6def85d9bc8f
#devops
+9
👩💻 Шпаргалка по C++
Шпаргалка фокусируется на языке, а не стандартной библиотеке, и учитывает особенности C++11/C++14
#cpp
Статья «Queueing» представляет собой интерактивное исследование различных стратегий очередей в контексте обработки HTTP-запросов. Она объясняет, почему очереди необходимы, и рассматривает три основных типа очередей:
1. FIFO (First-In-First-Out): Обработка запросов в порядке их поступления.
2. LIFO (Last-In-First-Out): Обработка последнего поступившего запроса в первую очередь.
3. Приоритетные очереди: Обработка запросов на основе их приоритета.
Кроме того, статья обсуждает стратегию предотвращения потери приоритетных запросов и предлагает интерактивные примеры для лучшего понимания каждой концепции. В завершение рассматриваются практические аспекты применения различных стратегий очередей в реальных системах.
https://encore.dev/blog/queueing
#http
Что такое Uniform initialization? Aggregate initialization?
Uniform initialization, введенная в C++11, позволяет использовать единый синтаксис для инициализации переменных и объектов, начиная от примитивных типов до агрегатов¹. Другими словами, она вводит инициализацию скобками, которая использует фигурные скобки {} для заключения значений инициализатора. Синтаксис выглядит следующим образом:
type var_name {arg1, arg2, ....arg n}.
Aggregate initialization - это форма инициализации списком для массивов или типов класса (часто структур или объединений), которые имеют: нет приватных или защищенных членов, нет пользовательских конструкторов, кроме явно заданных или удаленных конструкторов . Это позволяет напрямую инициализировать элементы агрегатов. Для этого мы предоставляем список инициализаторов в качестве инициализатора, который представляет собой список значений, разделенных запятыми.
Например, если у вас есть структура с несколькими членами:
struct Employee {
int id {};
int age {};
double wage {};
};
Когда мы определяем объект с типом структуры, нам нужен способ инициализации нескольких членов во время инициализации:
Employee joe; // как мы инициализируем joe.id, joe.age и joe.wage?
Агрегаты используют форму инициализации, называемую агрегатной инициализацией, которая позволяет нам напрямую инициализировать элементы агрегатов. Для этого мы предоставляем список инициализаторов в качестве инициализатора, который представляет собой список значений, разделенных запятыми. Так же как обычные переменные могут быть скопированы, напрямую инициализированы или списком инициализированы, есть 3 формы агрегатной инициализации.
#cpp