ЗабалИИ
Что такое ИИ. Ну возьмите коробку с ним. Завезите на остров, дайте ей камеру на 360. Результат будет - "зафиксировано движение".
Весь этот ИИ - просто быстрый поисковик в интернете. Чтобы что? Чтобы не за секунду мне дать результат, а за 0,0001 секунды? Это даже в случае Третьей мировой не имеет значения, а уж мне точно - наплевать.
Весь массив данных создали люди. Для людей. Зачем нам эта дрянь, хоть кто-нибудь знает? Кроме акционеров контор типа N****a.
Онлайн-курс "Программирование компьютерных сетей на Python" (бесплатно)
Год назад я выложил свой первый бесплатный курс "Основы компьютерных сетей". За это время на него записалось примерно 13 000 обучающихся, а средний рейтинг составляет 4.9. Особую благодарность я выражаю всем тем, кто указывает на опечатки, неточности и предлагает интересные формулировки. Благодаря вам этот курс стал на много лучше! Я бы даже сказал, что это уже не только мой курс, а наш общий =)
Недавно я дописал и выложил свой второй курс "Программирование компьютерных сетей (Python)". Как и первый, он полностью бесплатный, без регистраций и СМС.
Это практический курс для тех, кто хочет научиться писать свои собственные сетевые приложения на Python под Linux. На курсе вы научитесь:
Писать свой TCP/UDP сервер и клиент
Отправлять пакеты на сервер точного времени и читать ответ
Устанавливать безопасное (SSL) соединение
Писать многопоточный TCP/UDP сервер
Формировать свои произвольные пакеты (raw socket, scapy)
Писать свой сниффер (raw socket, scapy)
Управлять сетевыми настройками в ОС Linux прямо из Python (pyroute2)
Работать с tun/tap устройствами и писать собственные туннели (VPN)
Помимо лекционного материала с многочисленными примерами, курс содержит несколько практических заданий и теоретических вопросов, для закрепления материала.
Языки программирования на все случаи жизни. Часть 1
В программировании существует десятки разных направлений, языков ещё больше, около 9000. Эта статья будет интересна для тех, кто только-только начинает свой путь разработчика или же для тех, кому просто интересно. К языку будут прилагаться библиотеки и фреймворки, которые нужны для обсуждаемых направлений (например, django для python в бэкэнде). В статье будут не только языки программирования, но суть от этого не меняется.
Направления и языки
Web-разработка
В web-разработке есть 2 основных поднаправления: Backend и frontend. Frontend это клиентская часть сайта, её видит пользователь и она отправляется клиенту с сервера в браузер. Backend это логическая часть сайта, она работает на сервере и делает всё, что пользователь не видит, например, обрабатывает платежи и т.д.
Frontend
Frontend это клиентская часть веба. Она отвечает за визуал сайта. Всё то, что видит и слышит пользователь на сайте - дело рук фронтендера. Браузер делает http(s) запрос на сервер, он получает HTML-страницу (и CSS с Javascript) и отрисовывает страницу. Ответ сервера может содержать: HTML-документ; данные, встроенные в HTML; ссылки на статические файлы (CSS, JS, изображения); JSON/XML/другие данные (если это API запрос).
И так, языки для frontend разработки:
HTML и CSS: Это не опционально. HTML обязателен, а без CSS сайт может работать, но вряд ли он будет красивым. Их нельзя назвать языком программирования, но пусть будут. Фреймворки и библиотеки для CSS:
Tailwind CSS: Utility-first CSS фреймворк, то есть разработчик использует набор предопределённых классов, каждый из которых имеет некоторое количество стилей. Очень гибкий и мощный.
Bootstrap: Самый популярный. Предоставляет адаптивную сетку, компоненты (кнопки, навигация, карточки и т.д.), JS-плагины.
Sass / SCSS: Препроцессор CSS, который расширяет возможности стандартного CSS, добавляя функциональность, такую как переменные, вложенность, миксины и многое другое.
JavaScript (JS): Двигатель для визуала сайта. Он добавляет интерактивность и динамическое поведение на веб-страницы. Фреймворки и библиотеки для JS:
React: Библиотека от Meta. Позволяет создавать компоненты. Упрощает разработку.
Vue.js / Vue 3: Модульная структура. Относительно простой фреймворк.
Angular: Полноценный MVC-фреймворк от Google. Работает на TypeScript. Хорошо подходит для крупных корпоративных приложений. Включает в себя маршрутизацию, формы, HTTP-клиент и т.д.
Svelte: Очень быстрый и лёгкий. Отлично подходит для микросервисов.
TypeScript: Надмножество Javascript. Статическая типизация.
Backend
Backend это серверная часть веба. Обработка платежей, регистрация пользователей и всё то, что не видит клиент, делается тут.
Node.js: Это среда выполнения JavaScripts, которая позволяет использовать JavaScript для разработки серверной части. Фреймворки и библиотеки для Node.js:
Expess.js: Самый популярный и гибкий фреймворк, часто используемый в качестве основы для многих Node.js проектов. Он обеспечивает минимальный базовый набор функций для создания веб-приложений и API.
NestJS: Фреймворк, ориентированный на создание масштабируемых серверных приложений. Он использует модульную архитектуру, поддерживает TypeScript и предоставляет встроенные решения для валидации, маршрутизации, аутентификации и авторизации.
Fastify: Фреймворк, ориентированный на максимальную производительность и низкое потребление ресурсов, что делает его подходящим для высоконагруженных приложений.
Python: Этот язык многофункционален и его можно использовать в бэкэнде. Фреймворки и библиотеки для Python:
Django: Полноценный фреймворк, предназначенный для создания сложных веб-приложений, включает в себя ORM, систему шаблонов, админ-панель и многое другое.
Flask: Микрофреймворк, гибкий и легкий, подходит для небольших и средних проектов, а также для создания API.
FastAPI: Современный, быстрый фреймворк, ориентированный на создание API.
Java: Java доминирует в банках, финансовых платформах и крупных онлайн-сервисах (например, LinkedIn, Netflix, Amazon частично используют Java). В большинстве случаев используется Spring. Фреймворки и библиотеки для Java:
Spring: Один из самых популярных фреймворков, предоставляющий множество инструментов для разработки веб-приложений, включая управление зависимостями, аспектно-ориентированное программирование и доступ к данным.
C#: C# популярен в компаниях, работающих на Windows-инфраструктуре, особенно в Европе и США: от страховых компаний до госпорталов. Фреймворки и библиотеки для C#:
ASP.NET: Основной фреймворк C#. ASP.NET Core предоставляет широкий набор инструментов для создания веб-сайтов, API и других веб-сервисов.
Entity Framework Core: ORM (Object-Relational Mapping) фреймворк, который упрощает работу с базами данных. Позволяет работать с базами данных, используя объекты C# вместо SQL запросов.
Blazor: Фреймворк для создания интерактивных веб-интерфейсов, работающий как на стороне клиента (в браузере), так и на стороне сервера.
Go: Высокая производительность и простота. Фреймворки и библиотеки для Go:
Gin: Известен своей высокой производительностью и легкостью использования. Идеален для создания API и веб-приложений, требующих быстрой обработки запросов.
Echo: Легкий и быстрый фреймворк, ориентированный на производительность и простоту использования. Отлично подходит для создания API и веб-сервисов.
PHP: Классика веба. Фреймворки и библиотеки для PHP:
Laravel: Известен своей элегантностью, мощной системой шаблонов Blade, и богатым набором инструментов для разработки. Laravel часто выбирают для создания масштабных и сложных веб-приложений.
Ruby: Лаконичный и удобный. Фреймворки и библиотеки для Ruby:
Ruby on Rails (RoR): Самый популярный фреймворк, известный своей структурой MVC, удобством разработки и возможностями для создания масштабируемых веб-приложений. Он предоставляет готовые решения для работы с базами данных, маршрутизацией, представлением и многим другим, что значительно ускоряет процесс разработки.
Базы данных: Будучи backend разработчиком вам придётся работать с базами данных.
PostgreSQL: Гибкая система управления реляционными базами данных (СУБД). Удобно хранить геопространственные данные.
MySQL: Одна из самых популярных. Открытый исходный код. MySQL имеет меньше поддержки стандартов SQL, чем PostgreSQL.
SQLite: Лёгкая, встраиваемая система управления базами данных. SQLite не требует отдельного сервера, база данных хранится в одном файле на диске. Не предназначен для многопользовательского доступа с высокой конкуренцией. Для локального хранения.
MongoDB: Нереляционная (NoSQL) документо-ориентированная система управления базами данных, которая предназначена для хранения, обработки и масштабирования больших объёмов неструктурированных или полуструктурированных данных. MongoDB хранит данные в формате BSON (Binary JSON).
Redis (REmote DIctionary Server): Redis хранит данные в оперативной памяти, что обеспечивает очень быструю обработку запросов. Данные хранятся в парах "ключ-значение", что упрощает доступ к информации.
Docker / CI/CD / Nginx/Apache: Полезные вещи для бэкенда.
Системное программирование
Системное программирование - Разработка программного обеспечения, которое взаимодействует напрямую с железом. Это низкоуровневое программирование, где важна производительность и эффективность управления ресурсами. Системные программисты разрабатывают ОС, драйверы, компиляторы, виртуальные машины и антивирусы.
C: Фундамент всех ОС и системного ПО. Работает напрямую с памятью. Ядро Unix/Linux написано на C. Даёт полный контроль над памятью, но требует ручного управления памятью. Почти нет абстракции.
C++: Мощнее C, добавляет ООП, используется в движках и ядрах.
Rust: Безопасная альтернатива C / C++ без утечек памяти.
Assembly: Пишется для конкретного процессора (x86, ARM, RISC-V). Почти напрямую управляет CPU, регистрами, стеком.
Мобильная разработка
Создание приложений для смартфонов, планшетов и носимых устройств. Тут есть 3 поднаправления: нативные мобильные приложения; гибридные (на web-технологиях); кроссплатформенные.
Нативная разработка
Это создание мобильных приложений под конкретную операционную систему.
Kotlin: Разработка под android. Ститачески типизированный язык программирования, разработанный компанией JetBrains. Безопасен от NullPointerException. Выразительный синтаксис. Возможность интеграции с кодом на java.
Android studio: IDE специально для создания приложений под android.
Jetpack Compose: Упрощает и ускоряет процесс разработки интерфейсов за счёт меньшего объёма кода, мощных инструментов и интуитивно понятного кода. Использует kotlin для создания UI.
XML (eXtensible Markup Language): Язык разметки для хранения и передачи данных.
Swift: Разработка под IOS. Современный и безопасный.
Xcode: IDE для разработки под IOS.
UIKit: Предоставляет разработчикам набор элементов управления, такие как кнопки, метки, текстовые поля, а также возможности для обработки касаний и жестов, обеспечивая интуитивно понятное взаимодействие с пользователем.
SwiftUI: Декларативный UI-фреймворк от Apple.
Кроссплатформенная разработка
Один код работает и на android, и на IOS.
Flutter: Кроссплатформенный SDK от Google для создания красивых, нативных приложений для мобильных устройств. Быстрый рендеринг. Кастомный UI.
Dart: Основной язык для flutter. Простой синтаксис. Высокая производительность. Богатый набор библиотек.
React Native: Использует один и тот же код JavaScript для iOS и android. Основное преимущество React Native это возможность создавать приложения для iOS и Android, используя общий код на JavaScript.
Kotlin Multiplatform Mobile (KMM): Код пишется на kotlin и компилируется на обе ОС. UI пишется отдельно, но бизнес логика общая.
Гибридные и web-приложения
Такие приложения сочетают в себе элементы нативных и веб-приложений. Работают как web-приложения внутри обёртки. По своей сути, это веб-приложения (обычно написанные с использованием HTML, CSS и JavaScript), "упакованные" в специальную нативную оболочку (часто называемую WebView).
Ionic: Фреймворк для разработки гибридных кроссплатформенных мобильных приложений.
WebView Multiplatform Mobile: Кроссплатформенная библиотека для встраивания веб-контента в приложения для Android и iOS.
Xamarin WebView: Фреймворк для разработки кросс-платформенных мобильных приложений, предоставляет доступ к WebView для отображения веб-содержимого.
Tauri: Фреймворк для создания десктопных приложений с использованием веб-технологий. Во второй версии можно делать мобильные приложения. Написан на сложном rust.
Data Science / Аналитика данных
Data science - Наука о данных. Использует математику и статистику для обработки данных, извлечения полезной информации, выявления закономерностей и предсказания будущих событий. Они используют для этого статистические методы и машинное обучение.
Python: Де-факто стандарт в data science. Прост в изучении. Огромное сообщество. Богатейшая экосистема библиотек. Библиотеки для python, которые нужно знать аналитику данных:
NumPy: Для работы с многомерными массивами и матрицами. Линейная алгебра.
Pandas: Предоставляет мощные структуры данных.
Polars: Современная, очень быстрая альтернатива pandas. Оптимизированная для работы с большими наборами данных.
Matplotlib / Seaborn: Визуализация данных.
Scikit-learnt + keras: Машинное обучение. Прогноз данных.
Jupyter: Интерактивный блокнот для работы с кодом.
R: Язык специально для статистики. Имеет невероятно богатый набор пакетов для статистического анализа, визуализации.
SQL: Необходим любому специалисту по данным. Для хранения данных.
Scala: JVM-язык, сочетающий объектно-ориентированную и функциональную парадигмы. Основной язык для Apache Spark.
Julia: Создан специально для высокопроизводительных научных вычислений. Синтаксис похож на Python / MATLAB.
Машинное обучение и ML-инженеринг
ML-инженеринг (MLOps) - Инженерная дисциплина, которая фокусируется на машинном обучении. В отличие от Data Science, где основное внимание уделяется исследованию данных и построению моделей, ML-инженеринг охватывает весь жизненный цикл AI-продукта. Построение моделей, нейросетей, прогнозирование. Это инженерная часть Data Science, фокусирующаяся на промышленной эксплуатации. ML-инженеру нужно также знать математику на высоком уровне.
Python: Часто этот язык является лишь высокоуровневым интерфейсом, а фреймворки написаны на C++. Если бы модели обучались только на python, это было бы слишком медленно. Фреймворки и библиотеки python:
TensorFlow: Открытая библиотека машинного обучения. Предназначена для построения и обучения моделей машинного и глубокого обучения.
MLflow: Платформа с открытым исходным кодом для управления жизненным циклом машинного обучения.
Kubeflow: Набор инструментов для развертывания ML-воркфлоу на Kubernetes (использует Python для определения пайплайнов).
Научные и инженерные расчёты
Математика, физика, симуляции.
Python: Отлично подходит для научных вычислений. Простота изучения, огромное сообщество, богатейшая экосистема научных библиотек, отличная интеграция с другими языками и инструментами, поддержка всех этапов работы (прототипирование, анализ, визуализация, развертывание). Фреймворки и библиотеки python:
NumPy
SciPy: Построен на NumPy. Реализация алгоритмов: оптимизация, интегрирование, интерполяция, специальные функции, обработка сигналов/изображений, статистика, дифференциальные уравнения.
SumPy: Компьютерная алгебра.
Matplotlib: Гибкая и мощная библиотека для создания статических, анимированных и интерактивных 2D/3D графиков.
Mayavi, PyVista: Визуализация 3D данных и научных расчетов.
MATLAB: Специально для численных вычислений. Широко используется в инженерии (особенно в вузах и промышленности). Платный. Интуитивный ситнаксис.
Fortran: Непревзойденная производительность для задач с плотными численными расчетами (физика, механика жидкостей, метеорология, квантовая химия, вычислительная астрофизика). Отличная поддержка многомерных массивов и операций над ними (включая срезы).
Julia: Быстро набирает популярность в научных вычислениях.
C / C++: Абсолютный контроль над аппаратурой и памятью.
GameDev
Создание игр от мобильных до AAA. 2D и 3D. VR/AR.
C++ / Blueprints
Unreal Engine: Движок для больших и AAA игр. Красивая графика. Подходит для крупных игр с проработанными механиками и игр с упором на графику. Для мощного железа. На нём даже фильмы снимают. Чтобы делать игры на нём, нужно быть профессионалом.
C#
Unity: Подходит для большинства игр. Часто используется дли инди проектов. Большое сообщество и много ассетов. Много полезных функций. Для VR/AR хорошо подходит.
Godot: Поддерживает некоторые языки программирования, такие как C# и C++, есть собственный язык GDScripts. Активно развивается. Открытый, лёгкий, отлично подходит для 2D игр. Хороший выбор для новичков.
Phaser (JS): HTML5-движок для 2D игр в браузере. Прост и быстр в освоении. Идеален для веб-игр.
Lua: Скрипты в играх (Roblox, WoW и тд). Очень простой язык. Тоже вариант.
DevOps
DevOps (Development + Operation) - Подход к разработке ПО, объеденяющий разработчиков и IT-специалистов по эксплуатации с целью: ускорить релизы; повысить стабильность и безопасность; автоматизировать всё, что можно. В основных задачах у девопсера это CI/CD (непрерывная интеграция и доставка), контейнеризация, оркестрация контейнеров, автоматизации инфраструктуры, мониторинг и логирование.
Linux: Каждому девопсеру нужно знать linux. Linux это основная платформа для управления серверами, развёртывания приложений и автоматизации процессов в DevOps.
Bash: Для автоматизации. Скрипты. CI/CD. Bash-скрипты позволяют автоматизировать повторяющиеся задачи, экономя время и ресурсы.
Python: Python подходит для разных задач, включая написание сценариев, определение инфраструктуры в виде кода, создание конвейеров CI и CD, упрощение мониторинга и разработку пользовательских решений. Python работает с API многих облачных сервисов, таких как AWS, Google Cloud и Azure, что делает его незаменимым для облачной инфраструктуры.
Go: Создание собственных CLI-инструментов. Go позволяет разрабатывать и поддерживать собственные инструменты для автоматизации CI/CD, мониторинга, оркестрации. Многие популярные DevOps-инструменты написаны на Go, например Kubernetes, Docker, Terraform, Prometheus. Умение читать и писать на Go помогает лучше понимать и изменять их код.
YAML: Конфигурации Kubernetes, Ansible, Github Actions.
Groovy: Скрипты для Jenkins.
Docker: Контейнеризация.
Kubernetes: Оркестрация контейнеров. Автоматическое масштабирование. Балансировка нагрузки и управление состоянием контейнеров.
Jenkins: Инструмент для автоматизации процессов непрерывной интеграции (CI) и непрерывной доставки (CD) в DevOps. Он помогает разработчикам быстрее и эффективнее интегрировать изменения в код, находить и исправлять ошибки на ранних этапах, а также автоматизировать рутинные задачи.
Prometheus и Grafana: Мониторинг облачных приложений и сервисов.
Cloude
Cloud Developer - Специалист, чья работа сосредоточена на облачных платформах и сервисах. В отличие от традиционных разработчиков, он оперирует ресурсами (вычислительными мощностями, хранилищами, сетями), предоставляемыми по запросу через интернет, а не управляет локальными серверами напрямую. Разработчик облачных решений отвечает за проектирование, разработку, развертывание, масштабирование и поддержку приложений, сервисов и инфраструктуры, непосредственно работающих в облачной среде.
Amazon Web Services (AWS): Самая популярная облачная платформа, предоставляющая широкий набор сервисов для вычислений, хранения данных, аналитики, машинного обучения и многого другого.
Microsoft Azure: Облачная платформа от Microsoft. Популярная в корпоративном сегменте.
Google Cloude Platform (GCP): Облачная платформа от Google.
IBM Cloude: Платформа с акцентом на корпоративные решения, блокчейн и AI.
Oracle Cloude: Облачные решения от Oracle. Для крупного бизнеса и с фокусом на базы данных.
Для взаимодействия с облачными API, автоматизации задач инфраструктуры (IaC), написания скриптов развертывания и непосредственно разработки облачных приложений и сервисов разработчики облака активно используют языки программирования, такие как:
Python: Универсальность, богатые SDK для облаков.
Go (Golang): Высокая производительность, популярен для инструментов Cloud Native.
JavaScript / TypeScript: Фронтенд и бэкенд, серверные среды типа Node.js.
Java: Традиционно силен в корпоративной среде, особенно с Azure/IBM.
C#: Ключевой язык для экосистемы Microsoft Azure.
Ruby: Менее распространен, но используется, например, в DevOps инструментах.
Кибербезопасность
Кибербезопасность (Cybersecurity) - Комплексная практика защиты информационных систем, сетей, устройств, программ и данных от цифровых атак, несанкционированного доступа, повреждения или кражи. В современном мире, где бизнес, государственное управление и личная жизнь неразрывно связаны с цифровой средой, кибербезопасность становится критической необходимостью, а не просто опцией.
Основные направления кибербезопасности:
Сетевая безопасность: Защита инфраструктуры от атак (DDoS, MITM, эксплойты).
Информационная безопасность: Шифрование данных, контроль доступа, защита от утечек.
AppSec (безопасность приложений): Анализ кода, защита веб- и мобильных приложений.
Криптография: Разработка и взлом алгоритмов шифрования.
SOC & Мониторинг: Обнаружение и реагирование на инциденты в реальном времени.
Пентестинг и Red Teaming: Имитация атак для поиска уязвимостей.
Операционные системы для тестирования:
Kali Linux: Основной дистрибутив для пентеста.
Parrot OS: Альтернатива Kali с акцентом на анонимность.
BlackArch: Расширенный набор инструментов для хакеров.
Инструменты анализа и атаки:
Сканирование сетей: Nmap, Wireshark, Masscan
Взлом паролей: Hashcat, John the Ripper, Hydra
Эксплуатация уязвимостей: Metasploit, Burp Suite, SQLmap
Социальная инженерия: SET (Social-Engineer Toolkit), Maltego
Языки программирования:
Python: Автоматизация, скрипты для анализа угроз.
Bash/PowerShell: Администрирование, анализ логов.
C/C++: Разработка эксплойтов, анализ вредоносного ПО.
Go: Сетевые инструменты, быстрое создание утилит.
IoT и встаиваемые системы
Встраиваемые системы - Специализированные компьютеры, встроенные прямо в устройство, которым они управляют. Их задача это выполнять конкретные функции (управление двигателем, сбор данных с датчика и т.д.).
IoT (Internet of Things) - Когда такие встраиваемые системы получают возможность связываться друг с другом и с интернетом.
С чем должен уметь работать инженер IoT:
Микроконтроллеры (MCU)
Микропроцессоры (MPU)
Датчики: Температура, влажность, движение (акселерометр/гироскоп), свет, давление, газ, GPS и т.д.
Интерфейсы связи
Языки программирования:
C: Прямой доступ к железу, минимальные накладки.
C++: Набирает силу для сложных задач с ООП, где ресурсы позволяют.
Python: Для прототипирования, инструментов, мощных MPU (Raspberry Pi) и обработки данных на сервере / шлюзе.
Rust: Новый, но перспективный. Безопасность памяти + производительность как у C/C++. Начинают использовать в ядре Linux.
Assembler: Для самых критичных кусков кода или когда ресурсов очень мало.
ОС:
Без ОС (Bare Metal): Код работает напрямую на процессоре. Максимум контроля, минимум накладок.
RTOS (Real-Time OS): FreeRTOS (самый популярный), Zephyr (набирает ход, современный), ThreadX, VxWorks (для высоконадежных систем). Гарантируют времена реакции.
Linux: Для мощных MPU (Raspberry Pi, BeagleBone). Yocto Project/Buildroot — для сборки кастомных образов.
Блокчейн и Web3
Блокчейн - По сути, это распределенная база данных (цифровой реестр), где записи ("блоки") связаны в цепочку криптографически. Данные хранятся не на одном сервере у корпорации, а у тысяч участников сети
Web3 - Идея следующего поколения интернета поверх блокчейна. Суть такова, пользователь владеет своими данными, цифровыми активами (NFT, токены) и участвует в управлении сервисами. Вместо обычных платформ децентрализованные приложения (dApps).
ЯП:
Solidity: АБСОЛЮТНЫЙ мастхев для Ethereum и EVM-сетей (Polygon, BSC и т.д.). Похож на JavaScript, но со спецификой.
Rust: Доминирует в Solana, Near, Polkadot (Substrate), всё чаще пишут смарт-контракты и на нем. Сложнее, но мощнее.
Vyper (для Ethereum): Альтернатива Solidity, фокус на безопасность и читаемость (синтаксис ближе к Python).
Go: Для разработки нод (клиентов блокчейна), утилит.
Desktop
Десктоп-разработка - Создание приложений, которые работают напрямую на ОС пользователя. В отличие от веба или мобилок, тут есть прямой доступ к железу, файловой системе и нативным API. Мощь, контроль, но и ответственность за стабильность.
Стек:
Нативные технологии:
Windows (C# / .NET):
Языки: C#, C++/CLI
Фреймворки: WPF (XAML + C#), Wndows Forms
macOS:
Языки: Swift, Objective-C
Фреймворки: SwiftUI (новинка), AppKit (старая школа)
Linux:
Языки: C++, C, Python, Rust
Фреймворки: GTK (GNOME), Qt (KDE, кроссплатформенно), wxWidgets
. Кроссплатформенные фреймворки:
Electron: JavaScript + Chromium + Node.js. Плюсы: Пишешь как веб-приложение (HTML/CSS/JS). Минусы: Жрет память как не в себя.
Qt (C++): Мощь, скорость, зрелость. Используют в AutoCAD, Tesla. Поддержка 3D, сетей, БД.
Avalonia (.NET): Кроссплатформенный аналог WPF. Пишешь на C# — работает на Windows/macOS/Linux.
Flutter (Dart): Добрался до десктопа. Пока сыроват, но трендовый.
Tauri (Rust): Альтернатива Electron. Бекенд на Rust, фронт - любая веб-технология. Размер приложения ~10 МБ вместо 150 МБ у Electron.
Разработка корпоративных решений (Enterprise)
Erprise-разработка - Создание софта для крупного бизнеса: банки, страховые, логистика, ритейл, госсектор. Системы обрабатывают миллионы транзакций, хранят терабайты данных и должны работать 24/7.
ЯП:
Java (Spring Boot, Jakarta EE, Quarkus): Король корпов.
C# (.NET Core ASP.NET): Популярен в банках и госсекторе.
Python (Django, FastAPI): Для аналитики, скриптов.
ESB: Apache Camel, MuleSoft, IBM Integration Bus.
API Gateway: Kong, Apigee, AWS API Gateway.
Очереди: Apache Kafka (лидер), RabbitMQ, IBM MQ, Azure Service Bus.
Стандарты: REST/JSON (модерн), SOAP/XML (легаси), gRPC (микросервисы).
SQL: Oracle DB, Microsoft SQL Server, PostgreSQL, IBM Db2. Транзакции, ACID, отчетность.
NoSQL: MongoDB (документы), Cassandra (высокая нагрузка), Redis (кэш/очереди).
Аналитика: Snowflake, Amazon Redshift, Apache Druid.
Финтех
FinTech (Financial Technology) - Область, в которой пишут технологии для финансов. Например, финтехи пишут платёжные системы, необанки, аналитику и бюджетирование, кридитные платформы, алготрейдинг, B2B-решения. Финтех разработчик занимается разработкой: бизопасных API и клиентских приложений; обработкой денежных транзакций, комиссий, волют; реализацией сложных бизнес-правил.
Стек:
Java: Часто используется.
Kotlin: Современная альтернатива Java.
Go: Высокая производительность, минимализм.
Python: Быстрая разработка, аналитика. Скоринг.
C#: Банковский и страховой сектор.
Rust: Безопасность и производительность.
Если понравилась статья - рекомендую подписаться на телеграм‑канал NetIntel. Там вы сможете найти множество полезных материалов по IT и разработке!
Скопировать много слов сразу в буфер и вставить разом все
Привет, может быть тут повезёт
Ищу софт для копирования отдельных слов со страницы в буфер обмена и одновременную вставку всего, что скопировал.
На Windows есть журнал буфера обмена, туда можно копировать любое выделенное слово и они там сохранятся хоть 100 слов
но, вставить их все одновременно не знаю как, только по одному слову вставлять, а это не практично.
Может кто-то знает как реализовать или кто-то пользуется чем-то похожим, чтобы можно было выделять слова по всей странице или нескольких страницах одновременно, держать их в одном месте (условно буфере), потом оттуда их можно достать все сразу и вставить (например в документ)
Технологии: "Open Source" Биографии известных личностей, история развития свободного ПО
Рассказ пойдет о людях, которые оказали значительное влияние на становление сообщества в нише Open Source.
Ричард Столлман
Ричард Мэтью Столлман родился в 1953 году в семье учителя и продавца печатных станков. С раннего возраста он увлекался вычислительными машинами. Тогда еще не было персональных компьютеров, поэтому Ричард читал сопутствующую литературу — книги по программированию и техническую документацию.
В старшей школе его пригласили на стажировку в исследовательский центр IBM, где он впервые начал программировать. В 1970 году Столлман поступил на физический факультет Гарвардского университета. Общение с ровесниками давалось ему тяжело, поэтому он посвящал все свободное время учёбе и работе.
Еще на первом курсе Ричард начал подрабатывать лаборантом в Массачусетском технологическом институте (MIT).Именно работа в MIT оказала наибольшее влияние на подход Столлмана к написанию программ. В лаборатории царила атмосфера академического сотрудничества — люди свободно обменивались кодом и помогали друг другу с проектами. Но к концу 1970-х ситуация начала меняться — открытые программы стал замещать проприетарный софт.
Столлману не понравился тот факт, что университет перестал быть местом для открытого обмена идеями и программными инструментами. Поэтому он ушел из MIT и начал заниматься популяризацией открытого ПО.
Перед собой Ричард поставил две задачи — создать свободную операционную систему и легальную базу для её распространения. И в 1983 году родился проект GNU (GNU’s Not Unix), призванный стать открытой и улучшенной копией Unix (которая в то время была проприетарной). В его рамках также разработали открытую лицензию GPL. Она закрепила право бесплатно использовать программные продукты, модифицировать их и продавать.
В 1985 году Ричард основал Фонд свободного ПО, под эгидой которого были выпущены GNU GCC (компилятор C), GNU GDB (дебаггер) и GNU Emacs (культовый текстовой редактор). Эти инструменты и лицензия GPL позднее послужили основой для операционной системы Linux.
После распространения Linux Столлман стал часто выступать на ИТ-конференциях. Он путешествует по миру, читая лекции на темы этики и интеллектуальной собственности. При этом Ричард Столлман продолжает исполнять обязанности президента Фонда свободного программного обеспечения по сей день.
Линус Торвальдс
Линус Бенедикт Торвальдс родился 28 декабря 1969 года в финской семье шведского происхождения. В детстве Линус увлекся микрокомпьютерами и начал программировать: сперва на Бейсике, а затем и на машинном коде.
Самым крупным проектом его молодости была модификация операционной системы Sinclair QL, для которой он самостоятельно написал ассемблер и текстовый редактор. Неудивительно, что Линус без проблем поступил в главный вуз страны — Университет Хельсинки.
Именно там в конце 80-х он познакомился с Unix-подобной операционной системой под названием Minix. Линусу нравилась её портативность и легковесность, но не устраивали условия лицензии.
В 1991 году он решил создать собственную бесплатную альтернативу Minix для 32-битных процессоров Intel. Для этих целей он использовал инструменты проекта GNU, основанного Столлманом.
То, что начиналось как хобби, вскоре превратилось в одну из самых популярных операционных систем и международный феномен — Linux.Через какое-то время вокруг ОС сформировалось массивное сообщество, которым нужно было управлять.
Поэтому Линус был вынужден занять руководящую роль и отойти от разработки как таковой. По состоянию на 2006 год лишь два процента исходников ядра Linux были написаны лично Торвальдсом.
Как руководитель Линус известен своей прямотой, иногда доходящей до грубости. В прошлом году ему пришлось извиняться за своё поведение. Торвальдс даже временно покинул пост координатора Linux-проекта. Но вскоре вернулся к своим обязанностям и планирует дальше развивать экосистему open source.
Гвидо Ван Россум
Гвидо Ван Россум родился в 1956 году в Харлеме — столице Северной Голландии. В возрасте десяти лет молодому Гвидо подарили конструктор из электронных компонентов. Исчерпав книжку с примерами, он начал собирать собственные схемы. Этот опыт привил ему любовь к электронике. В старшей школе Россум интенсивно изучал физику и хотел проектировать электронные приборы.
Программированием, в отличие от Торвальдса и Столлмана, Гвидо начал заниматься значительно позже. В 70-х он поступил в Амстердамский университет на математический факультет. В здании вуза располагался мейнфрейм, возможности которого поразили Гвидо.
Он начал изучать Agol, Fortran и Pascal, а впоследствии и вовсе перевёлся на факультет информатики.Еще будучи студентом, Россум начал работать программистом. Под руководством Эндрю Таненбаума, создателя Minix, он включился в разработку операционной системы Amoeba, и позже — интерпретированного, объектно-ориентированного языка ABC. По всем меркам этот язык опережал своё время, но надежды, которые на него возложили, не оправдались.
Продукт провалился и через три года его разработку забросили.Во время рождественских каникул 1989 года Россум начал самостоятельно разрабатывать новый язык программирования, включавший в себя лучшие идеи «мертвого» ABC. Проект получил название Python — в честь комедийной группы Монти Пайтон, которую он так любил.В 90-е Python обогнал по популярности не только своих предшественников, но и многие современные языки. Вокруг него образовалось активное сообщество, а Гвидо был окрещен «Великодушным пожизненным диктатором» проекта.
Позднее Россум переехал в США. Там он работал в Google и популяризировал программирование среди детей. В 2008 году Гвидо начал помогать еще молодой команде Dropbox и трудится в её составе до сих пор.Что касается Python, то его популярность только растёт. Сегодня миллионы людей начинают свой путь в мире программирования именно с него.
Тим О’Райли
Чтобы open-source технологиями пользовались, нужно, чтобы кто-то про них писал. И Тима О’Райли буквально «сформировал» язык, которым мы говорим про open-source.
Тим О’Райли родился в 1954 году на юго-востоке Ирландии. Еще в детстве он переехал в Сан-Франциско. В отличие от других людей, упомянутых в статье, Тим получил гуманитарное образование, и выпустился из Гарварда с дипломом по античной литературе.
Вскоре после выпуска О’Райли женился, а также получил грант на перевод греческих басен. Но семью академическими грантами не накормишь — О’Райли начал искать способ построить карьеру.
Знакомый — инженер по имени Питер Брайер — предложил Тиму работу — писать техническую документацию для продуктов его компании. Несмотря на то что О’Райли ни разу в жизни не видел компьютеров, он согласился. Так, началось его путешествие в мир IT.К середине 80-х Тим накопил достаточно знаний, чтобы основать свою компанию. За это время он разработал собственный технический язык — простой и доступный даже таким гуманитариям, как он сам. Изначально его организация занималась производством документации на заказ, но позже превратилась в целую издательскую империю — O’Reilly.
Первым «прорывом» O’Reilly стала книга «The Whole Internet User's Guide and Catalog». Она вышла в свет в 1992 году, на заре интернета — и долгое время оставалась одним из самых авторитетных ресурсов по теме. Ежегодно компания продавала по 250 тыс. копий этой книги.
Когда в середине 90-х к Тиму обратились Cisco с предложением купить компанию. Он им отказал, уверенный, что сможет самостоятельно развивать бизнес. Так и получилось — сейчас его издательство зарабатывает более 50 миллионов долларов в год.
Помимо издательской деятельности, Тим активно участвовал в жизни Кремниевой долины. За способность предсказывать тренды его прозвали «оракулом». В 1998 году именно он популяризировал термин open source software, в нулевых опубликовал работу про Web 2.0. Последние несколько десятков лет он остается одной из самых видных фигур культуры мэйкеров.
Краткая история open source, часть первая: от открытого ПО к проприетарному
Как в свое время коммерческие решения практически вытеснили (хотя и временно) свободно распространяемый код.
Между наукой и национальной безопасностью
Период Второй мировой войны стал временем технологических прорывов для США. Сотрудничество научных институтов с военными организациями принесло плоды в сфере радио, криптографии и полупроводников.
После войны проведенные исследования положили основу таким изобретениям, как транзистор, а научные связи превратились в бизнес-контакты. Началось активное развитие ЭВМ.
Первый коммерческий компьютер IBM 701 — носил неофициальное название Defense Calculator. С 1952 по 1955 год с конвейера сошли лишь 19 экземпляров этой ЭВМ. Приобрести их было нельзя, но можно было арендовать на месяц за немалые деньги — порядка $12 тысяч ($107 тыс. по современным меркам).
Список компаний, которые позволили себе такую роскошь, ожидаемо состоит почти целиком из научных и государственных организаций. При этом за такие деньги они получали «голое» железо без какого-либо программного обеспечения и операционной системы.
Чтобы упростить работу, инженеры передавали программы друг другу. В индустрии царил дух академического сотрудничества. Научные институты, военные заказчики и большие бизнесы создавали группы для обмена знаниями, а их продукты труда носили статус общественного достояния.
Период обмена программами
Наиболее известными группами, участники которых делились «исходниками» друг с другом, были PACT, SHARE и DECUS. Первая из них, PACT — Project For the Advancement Of Coding Techniques — состояла из представителей военных подрядчиков, вроде Lockheed и Douglas, а также IBM.
Вместе они разработали серию одноимённых компиляторов для IBM 701 и 704, которые использовали методы хеширования. Руководство группы подчеркивало «ценность кооперации» в работе над подобными проектами и обещало сохранить этот дух в будущем.
Преемником PACT стала появившаяся в 1955 году группа SHARE, создавшая операционную систему SOS (Share Operating System). Это примитивное, по современным меркам, решение для ввода и вывода информации выросло на внутренних разработках General Motors. Именно SOS заложила основу для первых операционных систем пакетной обработки, которые выполняли несколько заданий, подготовленных одним или разными пользователями. Подобные системы доминировали на рынке ЭВМ в конце 50х — начале 60х.
В 1961 году появилась еще одна группа под названием DECUS (Digital Equipment Computer Users' Society). Её участники обменивались друг с другом программами на магнитных лентах. DECUS просуществовала довольно долго — в 1998 году в ней все еще состояли 50 тыс. человек.
Благодаря научному сотрудничеству и обмену ПО появились языки программирования Interlisp и UCI Lisp, и эта культура дала толчок к развитию открытой ОС Unix. Но в конце 60-х – начале 70х произошло несколько важных событий, приостановивших развитие open source. Они сделали программы продуктом, который можно монетизировать.
Платный софт и интеллектуальная собственность
Если в комплекте с IBM 701 не было ПО, то в последующих мейнфреймах его становилось всё больше. Весь этот софт был включён в стоимость системы, и поставлялся в комплекте. С точки зрения регуляторов, это было посягательством на монополию. После небольшого давления и угрозы судебного разбирательства IBM сдались, и в 1969 году начали продавать ПО отдельно. Это привело к появлению рынка программ для машин IBM.
Относительно высокоуровневые языки — FORTRAN и COBOL — получили широкое распространение, а микрокомпьютеры пришли в дома энтузиастов. Начала формироваться грань между пользователями и программистами. Появились сложные программные системы, в том числе ориентированные для персонального использования. И их создатели, вполне логично, хотели защитить свой труд. Это повлекло за собой публичное обсуждение: можно ли патентовать программные продукты? Каким образом на них распространяются законы об интеллектуальной собственности?
В 1974 была организована специальная комиссия, которая закрепила права программистов в американском законодательстве. С того момента производители ПО встали в один ряд с изобретателями. Немного позже апелляционный суд США принял решение, что авторское право распространяется на компьютерные программы. Разработчики получили возможность контролировать, кто пользуется результатами их труда. И в 1983 году свободно распространяемое ПО уступило проприетарному. Тогда IBM перестали раскрывать исходный код своих программ.
Так, закончилась целая эпоха свободного обмена софтом. Но были и люди, которые не собирались с этим мириться. Люди, благодаря которым свободный софт процветает и сейчас.
NotebookLLM — нейросеть для работы с большим массивом данных и быстрого погружения в новую тему на основе собственных источников
Возможности
— Загрузка файлов: PDF, TXT, Markdown, Аудио, YouTube
— Загрузка файлов из Google Диска (документы, таблицы, презентации)
— Поиск информации по загруженным источникам (с помощью промтов)
— Создание подкастов, аудиопересказ материала (диалог 2-х спикеров)
— Создание MindMap (визуализация структурированных данных из источников)
— Запросы и промты к добавленным источникам, получение информации на их основе
Особенности
— Работает на Gemini 1.5 Pro, обеспечивающий анализ длинных текстов (до 1 млн токенов)
— Исходные материалы могут быть на разных языках, язык ответа настраивается: "Настройки" -> "Язык результатов" -> "Выбрать язык"
— Работает с VPN, в идеале использовать - США
— Можно создать 100 блокнотов на бесплатной версии, внутри каждого до 50-ти источников.
Сделал MindMap на тему "Архитектура ПО: Монолит и микросервис"
📌 Работаем с данными и источниками здесь - notebooklm google
📌 Я буду ОЧЕНЬ благодарен, если вы оцените пост и посмотрите мой канал в ТГ (ссылка в профиле пикабу). Всем позитива и хорошего настроения, будьте добрее друг к другу!