Обновить
403.79

Open source *

Открытое программное обеспечение

Сначала показывать
Порог рейтинга
Уровень сложности

Как развивается open source в Яндексе — рассказывает Сергей Бережной, директор по взаимодействию с разработчиками

Уровень сложностиПростой
Время на прочтение11 мин
Охват и читатели1.1K

На связи «Open source в России» [серия «бигтехи»], и мы продолжаем говорить о развитии организаций на базе открытой разработки. На днях я написал @veged с предложением обсудить open source-проекты Яндекса и все, что с ними связано в компании. Сергей поделился историческими подробностями, рассказал о работе с сообществом и в целом об отношении к open source в Яндексе. В итоге у нас получился один из наиболее подробных материалов из всей серии интервью.

Читать далее

Нужно ли «развитие» языкам программирования

Уровень сложностиСредний
Время на прочтение6 мин
Охват и читатели3K

TL;DR: Нет. Хорошо спроектированный язык в развитии не нуждается.

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

Более того, ниже я постараюсь уложиться в нескольких абзацев, чтобы рассказать, какие требования лично я предъявляю языку программирования в 2025 году, и почему этому «идеалу» просто некуда «развиваться».

Опять школота против ООП и ФП

Третья часть исследования Nau Engine

Уровень сложностиСредний
Время на прочтение11 мин
Охват и читатели1.5K

В финальной части нашей трилогии, посвящённой Nau Engine, мы уделим внимание ошибкам, возникающим при разработке классов. Приведённые в статье примеры наглядно демонстрируют, как даже небольшие недоработки могут обернуться серьёзными проблемами в работе приложения.

Читать далее

Расширение возможностей веб-сервера при помощи WASM на примере Angie

Уровень сложностиСложный
Время на прочтение19 мин
Охват и читатели2.1K

Наверное, не секрет, что одна из причин популярности nginx — это развитая экосистема сторонних модулей. Модули позволяют не просто настраивать какие-то детали обработки запроса, но и глубоко изменять поведение сервера.

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

Теперь в этот набор добавляется ещё и модуль WASM, который мы разработали для нашего веб-сервера Angie (здесь и далее ссылки на нашу документацию). Зачем понадобился WASM на сервере, чем нас не устраивают существующие методы расширения и что в итоге получилось?

Данная статья — транскрипт выступления Владимира Хомутова на конференции HighLoad++. Владимир с 2012 года разработчик nginx, а с 2022 разработчик Angie.

Читать далее

Фундаментальный анализ акций в РФ и США

Уровень сложностиПростой
Время на прочтение13 мин
Охват и читатели2.3K

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

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

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

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

Буду использовать для анализа сразу два рынка: США и РФ.

США: здесь торгуется более 10 тысяч компаний, а объем открытых данных позволяет глубже изучать инвестиционные стратегии.

РФ: рынок значительно меньше (всего несколько сотен компаний), но, поскольку мы живем здесь, он остается актуальным для анализа и инвестиций.

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

Изучаем существующие стратегии и API

Установка AmneziaVPN на Android TV

Уровень сложностиСредний
Время на прочтение2 мин
Охват и читатели68K

Всем привет! В этой статье я расскажу о том, как можно использовать AmneziaVPN на AndroidTV. При этом совершенно не важно для чего вы ее используете: для Self-hosted VPN, для AmneziaPremium, или с какими-то другими ключами. Лично у меня была и премиум подписка и мой личный VPN на собственном сервере с X-Ray. 

Читать далее

Код свободы: Хабр и GitVerse открывают сезон Open source

Время на прочтение7 мин
Охват и читатели159K

Вспомни тот момент, когда ты впервые запустил программу, созданную тысячами невидимых рук. Linux, Firefox, PostgreSQL... За каждым из этих имён стоит революция — мир, где код принадлежит всем и каждый может доработать и улучшить его. Мир open source.

Сорок лет назад это казалось утопией. Софт для серверов и пользовательских компьютеров создавался на заказ и мог запросто стоить дороже железа, на котором разворачивался. И его нельзя было модифицировать, даже если он работал неправильно. Не желая мириться с ситуацией, в 1983 году Ричард Столлман запустил в Массачусетском технологическом институте проект GNU. Планы проекта были амбициозными: разработать столько свободного ПО, чтобы хватило на все задачи (почти как у Стругацких — ПО всем, даром, и чтобы никто не ушёл обиженным). Для достижения этой цели проект в 1984 году приступил к разработке операционной системы GNU (рекурсивный акроним от англ. GNU’s Not UNIX — GNU не Unix). Как мы знаем, у них получилось. Кто мог тогда подумать, что именно свободное программное обеспечение станет фундаментом цифрового мира в далёком 2025 году!

А теперь представь: твой код тоже часть этой революции. Твоё имя — в списке контрибьюторов проекта, который используют миллионы. Звучит круто, правда? Сегодня Хабр совместно с GitVerse — AI-first-платформой для работы с кодом со встроенным AI-ассистентом GigaCode — открывает сезон Open source: время, когда мы вместе будем исследовать, как создаётся, развивается и меняет мир ПО с открытым исходным кодом.

Узнать о конкурсе

Как мы пишем код для curl на C

Уровень сложностиПростой
Время на прочтение6 мин
Охват и читатели3.8K

Мне часто задают такой вопрос: как мы пишем на C код для curl, чтобы он был безопасным и надёжным в миллиардах установок? Мы предпринимаем определённые меры и принимаем решения. «Серебряной пули» нет, есть только рекомендации. Как вы убедитесь сами из этой статьи, в них тоже нет ничего странного или неожиданного.

«c» в слове «curl» не обозначает и никогда не обозначало язык программирования C, это расшифровывается как client.

Предупреждение

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

Читать далее

Песочница своими руками

Уровень сложностиСредний
Время на прочтение5 мин
Охват и читатели970

Если бы меня попросили составить список наиболее часто используемых не по делу страшилок в нашей профессии, я бы на первое место с большим отрывом поставил мантру «никогда, ни при каких обстоятельствах, не используйте eval». Потому что это небезопасно, а-та-та. (Для скучающих я привел внизу пополняемый список ненавистных мне идиотских обощений, рассчитанных на новичков и тупых.)

Как все без исключения догмы, эта тоже имеет крайне ограниченную область применения. Из того, что не нужно разрешать случайным посетителям сайта выполнять любой код на сервере — никак не следует, что eval — чем-то плох per se. В конце концов, зачем-то его ведь придумали и добавили в такую прорву самых разных языков.

Не так страшен eval, как его противники

Зачем выбирать F#?

Уровень сложностиСредний
Время на прочтение17 мин
Охват и читатели7.9K

Если бы кто-нибудь сказал мне несколько месяцев назад, что я буду снова экспериментировать с .NET после более чем пятнадцатилетней паузы, то я бы, наверно, рассмеялся1. В начале своей карьеры я пробовал работать с .NET и Java, и хотя некоторые вещи .NET делал лучше, чем Java (у него была возможность научиться на ошибках ранней Java), я быстро остановился на Java, потому что это была по-настоящему портируемая среда.

Наверно, читающие мой блог знают, что последние несколько лет я время от времени экспериментировал с OCaml, и я могу с уверенностью сказать, что он стал одним из моих любимых языков программирования наряду с Ruby и Clojure. Недавно работа с OCaml привлекла моё внимание к F# — это разработанный компанией Microsoft ML (Meta Language) для .NET , функциональная копия объектно-ориентированного (по большей мере) C#. Самый новый ML-язык…

Читать далее

Когда менять шины: как Python и открытые API помогут избежать ошибок

Уровень сложностиПростой
Время на прочтение3 мин
Охват и читатели2.2K

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

Знакомая ситуация? Чтобы не гадать, я решил подключить Python и прогноз погоды, чтобы получить точный ответ.

Как Python и погода помогают решить

Возвращаем доступ к Аниме за пару минут

Уровень сложностиПростой
Время на прочтение2 мин
Охват и читатели12K

Всем привет! Мы уверены, что среди читателей Хабра точно найдутся любители аниме. В последние годы в России под удар попали не только новостные сайты и соц. сети, но и разные видео-хостинги. В том числе регулярно блокируются сайты с аниме-контентом и фанфиками, ссылаясь на  обвинения во «вреде для психики» и «пропаганде». 

Для миллионов людей аниме — это целая культура, глубокий мир историй и эмоций, возможность увидеть альтернативные взгляды и вдохновение. 

Мы считаем несправедливыми подобные ограничения, поэтому добавили поддержку некоторых популярных аниме-сайтов в наш бесплатный VPN - Amnezia Free.  

Ниже представлен список сайтов, на которых снова можно будет смотреть аниме.

Читать далее

Прочтите это, если планируете работать с Next.js

Время на прочтение12 мин
Охват и читатели5.9K

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

Принципиальным решением всех этих проблем является опенсорсная модель разработки ПО. Если вы пользуетесь софтом, который разрабатывается открыто, то вы (как и кто угодно другой) вправе расширять или модифицировать его на ваше усмотрение, так, как того требует практика. Ещё важнее, что опенсорсное программное обеспечение легко портируется, и именно поэтому разработчики и организации вольны переносить свою инфраструктуру от провайдера к провайдеру, не опасаясь впасть в зависимость от конкретного поставщика.

Именно такие ожидания я связывал с Next.js — опенсорсным фреймворком для веб-разработки, созданным и управляемым компанией Vercel. Vercel — это облачный провайдер, предлагающий управляемый хостинг Next.js как услугу.

Читать далее

Ближайшие события

Запуск Linux внутри PDF

Время на прочтение3 мин
Охват и читатели7.1K


По мнению некоторых пользователей, PDF — простой формат для обмена документами. На самом деле это очень сложный стандарт, который поддерживает выполнение практически любого кода. Неудивительно, что в прошлые годы энтузиастам удалось успешно запустить Doom внутри PDF и провести ряд других интересных экспериментов.

Оказалось, что на этом возможности движка по рендерингу PDF не ограничиваются. Он способен запустить даже эмулятор полноценного процессора, а в нём — целую операционную систему.
Читать дальше →

Rust 1.86.0: преобразование в родительский трейт, поддержка изменяемой индексации для HashMap и срезов

Уровень сложностиПростой
Время на прочтение5 мин
Охват и читатели1.2K

Команда Rust рада сообщить о новой версии языка — 1.86.0. Rust — это язык программирования, позволяющий каждому создавать надёжное и эффективное программное обеспечение.


Если у вас есть предыдущая версия Rust, установленная через rustup, то для обновления до версии 1.86.0 вам достаточно выполнить команду:


$ rustup update stable

Если у вас ещё не установлен rustup, вы можете установить его с соответствующей страницы нашего веб-сайта, а также посмотреть подробные примечания к выпуску на GitHub.


Если вы хотите помочь нам протестировать будущие выпуски, вы можете использовать канал beta (rustup default beta) или nightly (rustup default nightly). Пожалуйста, сообщайте обо всех встреченных вами ошибках.

Читать дальше →

Не только для райсеров. Arch Linux на Hyprland для работы и гейминга

Время на прочтение14 мин
Охват и читатели49K

Все мы уже много раз слышали и видели заветные I use arch btw и конечно виноваты не те, кто так говорит, ведь это прописано в лицензионном соглашении в процессе установки через очень приятный и понятный даже вашей бабушке GUI. Вам не нужно вручную подключаться к вашему wifi, не нужно размечать и монтировать диски. А установку всех нужных именно вам пакетов за вас сделает сама система, нужно только подписать соглашение ...

Как же пользоваться Hyrpland и стоит ли делать свой Rice?

Читать далее

Улучшаем диалоговое окно «Открыть\Сохранить как»: быстрое открытие путей из файловых менеджеров

Уровень сложностиПростой
Время на прочтение2 мин
Охват и читатели944

Представьте, что вы хотите открыть/сохранить файл. В этот момент появляется диалоговое окно и приходится вручную искать каталог в вашей системе. QuickSwitch позволяет автоматически переключиться на нужный вам путь, если он открыт в любом из поддерживаемых файловых менеджеров (Explorer, Directory Opus, Total Commander, XYPlorer).

Читать далее

Как один разработчик предотвратил крупнейшую кибератаку: история взлома XZ Utils

Уровень сложностиСредний
Время на прочтение14 мин
Охват и читатели4.2K

Прошел ровно год с момента, когда мир с открытым ртом следил за расследованием одного из самых изощрённых бэкдоров в истории Linux. История с библиотекой xz Utils напоминала триллер: внедрение под реальным именем, доверие сообщества, закладки в коде — и случайное обнаружение в самый обычный рабочий день.

29 марта 2024 года программист Андрес Фройнд проснулся, как обычно, рано. На кухне уже фыркала кофемашина, а ноутбук мигал знакомым индикатором обновлений. Андрес любил утренние часы: пока город только-только просыпался, он уже погружался в привычную рутину — тесты, логи, графики загрузки процессора.

Утром он запустил стандартный набор тестов. Всё выглядело штатно: графики ровные, CPU не перегружен, багов не видно. И вдруг — странность. Незначительная ошибка, но не из тех, что просто игнорируешь. Андрес нахмурился. «Что это было?» — пробормотал он. Он подключился по SSH к серверу, чтобы проверить детали, и заметил ещё одно отклонение: задержка отклика в 500 миллисекунд. Полсекунды. Для большинства — ерунда. Но для Андреса — первый тревожный звонок. Он начал копать глубже.

Читать далее

Пишем Telegram-бота на Go(и заставляем его мотивировать нас каждые 30 минут)

Время на прочтение9 мин
Охват и читатели23K

Давно уже было желание сделать что-то простое и полезное в Telegram, но чтобы не пришлось постоянно за этим следить. И вот пришла гениальная идея: чтобы быть всегда замотивированным, можно написать бота, который будет (с какой то периодичностью) сам отправлять мотивационные цитаты в канал?

Этот бот берёт случайные цитаты известных людей из интернета, переводит их на русский язык и отправляет в Telegram-канал по расписанию. Например, утром, днём, вечером и ночью. Звучит просто, правда? Но внутри этого проекта есть всё, что нужно для обучения: чистая архитектура, работа с API, планировщик задач и даже деплой на облачную платформу Railway.

Весь код писать сюда будет довольно избыточно поэтому, это не пошаговое руководство, а просто обзор проекта. Ещё хочу сказать, что мне нравиться как генерирует изображение ChatGPT и я даже поставил на обложку. Раньше, конечно, качество изображений оставляло желать лучшего.

Что в итоге получилось и код проекта можно найти по этим ссылкам.

Telegram-канал который получился

Проект на GitHub

Читать далее

Нужны ли FSM синхронные вызовы?

Уровень сложностиСредний
Время на прочтение8 мин
Охват и читатели1.1K

TL;DR: Нет, не нужны.

Текст ниже — иллюстрация к тексту «Этот мир — асинхронный, и что вы ему сделаете», раскрывающая реализацию конечного автомата на полностью асинхронной акторной модели.

В качестве иллюстрации — используется библиотека Finitomata, реализующая распределенную модель для обслуживания большого количества конечных автоматов (например, заказов в онлайн-магазине, или турникетов в метро).

Полностью асинхронный конечный автомат