Open source — TechCave

Открытое программное обеспечение (англ open-source software) — программное обеспечение с открытым исходным кодом.


Открытое программное обеспечение (англ open-source software) — программное обеспечение с открытым исходным кодом.

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

Стена группы

Загрузка...
Den
2 месяца назад
#

GObject: наследование и интерфейсы



В комментариях к
прошлой статье часто высказывалось мнение, что система GObject не нужна ввиду наличия C++ и других высокоуровневых языков. Помимо чисто технических моментов, о которых уже поговорили в комментариях, хотелось бы затронуть другой аспект. Вероятно, большинство комментаторов видит смысл существования объектной системы GLib в упорном нежелании сишников-ретроградов пользоваться благами цивилизации и смиряться с неумолимой поступью прогресса. Вероятно, так оно и было на заре развития Glib/GTK, зародившихся в мире UNIX-систем, GNU, open-source, идей Столлмана, и т. п. Большая часть того поколения хакеров действительно предпочитали Си, в то время как C++ был относительно молод и неразвит и преимущества его использования казались не настолько очевидными.

Сегодня, разумеется, для новых проектов большинство из нас предпочтёт использование более удобных, лаконичных и безопасных языков, даже если будет знаком со всеми нюансами использования GObject. Однако не стоит упускать из виду, что за 20 с лишним лет существования GLib/GTK с их использованием были созданы тысячи приложений и библиотек, многие из которых активно развиваются и поныне тысячами программистов со всего мира. В них добавляется новый функционал, вылавливаются баги, их адаптируют к современным технологиям вроде HiDPI-экранов, Wayland, Vulkan, и т. д. Для того, чтобы читать (дополнять, исправлять) код таких проектов, необходимо иметь базовые знания объектно-ориентированных расширений для Си, о котором мы с вами ведём речь.

Засим милости прошу под кат. Тренируемся, как обычно, на кошках :)



Источник
Загрузка...
2 месяца назад
#

Пишем свой BitTorrent-клиент на базе библиотеки Bt



Всем привет! В данной статье я расскажу о том, что из себя представляет библиотека Bt, чем она хороша и почему стоит иметь ее в виду, если для решения каких-то задач планируется использовать BitTorrent. Затем, в качестве демонстрации базовых функций и основного API, мы реализуем простейший консольный торрент-клиент.



Отличительные особенности Bt

Bt — это современная полнофункциональная реализация протокола BitTorrent на Java 8 [1]. По сравнению с существующими open-source аналогами [2][3], Bt обладает следующими преимуществами:



Источник
Загрузка...
2 месяца назад
#

Асинхронные HTTP-запросы на C++: входящие через RESTinio, исходящие через libcurl. Часть 1



Преамбула

Наша команда занимается разработкой небольшого, удобного в использовании, встраиваемого, асинхронного HTTP-сервера для современного C++ под названием
RESTinio. Начали его делать потому, что нужна была именно асинхронная обработка входящих HTTP-запросов, а ничего готового, чтобы нам понравилось, не нашлось. Как показывает жизнь, асинхронная обработка HTTP-запросов в C++ приложениях нужна не только нам. Давеча на связь вышли разработчики из одной компании с вопросом о том, можно ли как-то подружить асинхронную обработку входящих запросов в RESTinio с выдачей асинхронных исходящих запросов посредством
libcurl.

По мере выяснения ситуации мы обнаружили, что эта компания столкнулась с условиями, с которыми сталкивались и мы сами, и из-за которых мы и занялись разработкой RESTinio. Суть в том, что написанное на C++ приложение принимает входящий HTTP-запрос. В процессе обработки запроса приложению нужно обратиться к стороннему серверу. Этот сервер может отвечать довольно долго. Скажем, 10 секунд (хотя 10 секунд — это еще хорошо). Если делать синхронный запрос к стороннему серверу, то блокируется рабочая нить, на которой выполняется HTTP-запрос. А это начинает ограничивать количество параллельных запросов, которые может обслуживать приложение.

Источник
Загрузка...
2 месяца назад
#

Segregated Witness для чайников



Масштабируемость биткоина является одной из его главных проблем, над решением которой активно работают. Одним из представителей этих решений является, например, технология Lightning network, но ее реализация пока что не представляется возможной ввиду некоторых уязвимостей. Другое решение — Segregated Witness также направлено на повышение масштабируемости, но ко всему прочему решает еще и целый ряд проблем, включая ту самую уязвимость, мешающую реализации лайтнинга. В этой статье мы рассмотрим основные преимущества Segregated Witness, а также опишем механизм его работы.



img



Источник
Загрузка...
2 месяца назад
#

Linux в одном файле для Macbook





TL;DR Можно уместить полноценный Linux Live дистрибутив в один файл, если вкомпилировать в ядро initramfs с корневой файловой системой. Компьютеры с UEFI умеют загружать такой файл напрямую, без помощи загрузчика типа GRUB. У меня получилось уместить дистрибутив с программами
aircrack-ng, reaver и драйверами для карт Wi-Fi в файл размером
20 мегабайт (наверняка можно еще меньше).

Основные преимущества

  • Работает на любых компьютерах с UEFI — один и тот же файл будет работать на PC и Mac.

  • Не требует установки — достаточно скопировать один файл на EFI-раздел диска и указать в переменных NVRAM путь к этому файлу.

  • Не нужно устанавливать загрузчики GRUB, rEFInd — ядро Linux собранное с поддержкой EFI Stub можно грузить напрямую без промежуточного загрузчика.

  • Не нужны USB-флешки — скопированный на раздел EFI дистрибутив остается там навсегда, и его можно будет загрузить в любой момент. Он не занимает места на разделе основной системы, так как раздел EFI не используется в ОС.

  • Не изменяет процесс загрузки — систему можно загрузить один раз, без изменения порядка загрузки в настройках UEFI. Следующая перезагрузка компьютера загрузит обычную операционную систему. Никаких следов Linux в очередности загрузки не останется.

  • Совместимо с шифрованием диска FileVault и т.д. — файл копируется на EFI System Partition, специальный зарезервированный раздел диска. В компьютерах Mac его размер около 200 мегабайт. Он выделен под Boot Camp и обычно не используется



Источник
Загрузка...
Den
2 месяца назад
#

Как построить сообщество. Перевод книги «Социальная архитектура»: Глава 4. Протокол для коллаборации C4



«Это эссенция тридцатилетнего опыты разработки программного обеспечения.»


imageПроцесс ZeroMQ: C4

Когда мы говорим о ZeroMQ, мы иногда имеем в виду
libzmq — основную библиотеку. В начале 2012 года мы синтезировали процесс
libzmq в формальный и
многоразовый протокол для совместной работы, который мы назвали
“Контрактом на разработку коллективного кода” или C4. Вы можете рассматривать это как слой над лицензией (например, MPLv2). Это наши правила, и я объясню причины возникновения каждого из них.

C4 — это эволюция модели
GitHub Fork + Pull. Вы можете подумать, что я поклонник git и GitHub. И это точно: эти два инструмента оказали положительное влияние на нашу работу в последние годы, особенно когда речь идет о создании сообщества.

Язык
Ключевые слова «ДОЛЖЕН», «НЕ ДОЛЖЕН», «ТРЕБУЕТСЯ», «ДОЛЖЕН», «НЕ ДОЛЖЕН», «СЛЕДУЕТ», «НЕ СЛЕДУЕТ», «РЕКОМЕНДУЕТСЯ», «МОЖЕТ» и «ДОПОЛНИТЕЛЬНО» в этом документе следует интерпретировать так, как описано в RFC 2119.


Начиная с RFC 2119, в тексте про C4 четко указано, что он намерен выступать в качестве протокола, а не как случайно написанный набор рекомендаций. Протокол — это договор между сторонами, который определяет права и обязанности каждой стороны. Они могут быть знакомы в сети, или могут быть незнакомцами, работающими в одном проекте.

Источник
Загрузка...
3 месяца назад
#

Релиз первой беты кросс-платформенного XAML UI-тулкита Avalonia



Состоялся релиз первой бета-версии Авалонии.



Avalonia — кроссплатформенный .NET UI-тулкит, вдохновлённый технологиями WPF и распространяемый под лицензией MIT. Он полностью поддерживает .NET Core 2.0, XAML, дата-биндинги, lookless-контролы и многое другое. Avalonia позволяет писать на C# приложения под Windows, Linux и Mac OS X. Возможность запуска на iOS и Android находится в экспериментальном состоянии.



Данная версия стабильна и имеет полное право называться бетой: тулкит не разваливается в руках и имеет приличный базовый набор контролов (см. видео). На нём создано два достаточно больших приложения с открытым исходным кодом: AvalonStudio — кроссплатформенная IDE для разработки на C# и C++ и Core2D — редактор 2D-схем и диаграмм.



Источник
Загрузка...
3 месяца назад
#

Задай вопрос создателю Vue.js





Vue — JavaScript фреймворк для разработки веб-приложений на JavaScript, созданный Эваном Ю (Evan You) в 2013 году.



Vue нашел золотую середину между React и Angular и испытал взрывной рост в последние два года, попав в тройку лидирующих JS фреймворков.



В отличии от Angular/Google и React/Facebook Vue разрабатывается сообществом и финансируется через пожертвования на Patreon. В результате Эван оставил работу в Google и полностью посвятить себя разработке Vue.



Vue набирает популярность и в России:

• В русском Vue чате в Telegram уже более 2200 человек!
• С предыдущими статьями о Vue можно ознакомиться в хабе VueJS
• 22 Марта состоится первый VueMoscow, не пропустите!



Эван любезно согласился ответить на вопросы пользователей Хабрахабра.
Задавайте свои вопросы в комментариях. Подробности и немного о Vue под катом.



Источник
Загрузка...
3 месяца назад
#

Rust: Знакомимся с языком на примере «Угадай-ки»



Давайте познакомимся с Rust, поработав над маленьким проектом! Мы покажем основные концепты Rust на реальном примере. Вы узнаете о let, match, методах, ассоциированных функциях, подключении сторонних библиотек и много о чем другом. Мы реализуем классическую задачу: игра “угадай-ка”.



Источник
Загрузка...
3 месяца назад
#

Архивирование и восстановление индексов в Elasticsearch



Однажды в одно прекрасное утро перед нами встал вопрос архивирования индексов Elasticsearch. Захотелось увидеть в хранилище стройные ряды сжатых файлов, по одному на каждый индекс.

«Из коробки» Elastic такого решения не предлагает, по крайней мере, в версии 5.х. Немного поспрашивав у Гугла Всемогущего, мы решили создать собственный велосипед. Пусть немного неуклюжий, зато родной.



Источник
Загрузка...
Den
3 месяца назад
#

Выпуск Rust 1.24



Команда Rust рада сообщить о новой версии Rust: 1.24.0. Rust — это системный язык программирования, нацеленный на безопасность, скорость и параллельное выполнение кода.



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



$ rustup update stable


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



Что вошло в стабильную версию 1.24.0

Этот релиз содержит две очень интересные новые фичи: rustfmt и инкрементальную компиляцию!



Источник
Загрузка...
Den
3 месяца назад
#

Знакомство с ConcourseCI



ConcourseCI logo



Всем привет! Я заметил, что на Хабре очень мало информации про такой сервер сборки, как ConcourseCI. Я решил восполнить этот пробел и написать небольшое введение. Под катом описание этого инструмента и небольшой туториал.



Источник
Загрузка...
3 месяца назад
#

Mozilla разработала открытый шлюз для Интернета вещей





Apple, Google, Amazon, Samsung — у каждой из этих компаний собственные стандарты и программы для управления «умными» устройствами собственной марки. В результате они зачастую могут общаться только со своими «родственниками» производства той же фирмы. Смарт-колонка Apple HomePod откажется делать резервную копию данных в облако Amazon или Google и не будет выполнять команды с Andrioid-смартфона. Получается, что для полной интеграции вся техника в доме должна быть от одной компании. Это явно ненормальная ситуация.

В прошлом году организация Mozilla
объявила, что работает над созданием единого свободного фреймворка — программ и сервисов для Интернета вещей, работающих по открытому стандарту
Web Things API, который использует JSON, REST и WebSockets API.

Фреймворк должен стать единым шлюзом для взаимодействия «умных» устройств разных производителей (Things Gateway). Сейчас организация
официально объявила о запуске проекта
Mozilla IoT, выложила стек программ и опубликовала
руководство по построению системы «умного дома» с использованием Raspberry Pi. Заявка на стандартизацию Web Things API подана в консорциум W3C 2 февраля 2018 года.

Источник
Загрузка...
3 месяца назад
#

Научиться перехватывать необработанные сообщения или пример того, как SObjectizer обрастает новыми фичами…



Нам очень приятно, когда в
SObjectizer добавляются новые возможности, возникшие в результате подсказок и/или пожеланий пользователей SObjectizer-а. Хотя далеко
не всегда это оказывается просто. Ведь, с одной стороны, у нас, как у команды разработчиков и старых пользователей SObjectizer-а, уже есть собственные стереотипы о том, как SObjectizer принято использовать. И не всегда получается сразу оценить «свежий взгляд со стороны», понять что реально хочет видеть пользователь во фреймворке и почему он не удовлетворен имеющимися средствами. С другой стороны, SObjectzer не такой уж и маленький фреймворк, добавление новых возможностей требует определенной осмотрительности. Нужно, чтобы новая функциональность не конфликтовала с уже имеющимися фичами. И, тем более, чтобы после добавления чего-то нового не сломалось то, что уже есть и давно работает. Плюс к тому, у нас есть пунктик по поводу сохранения совместимости между версиями SObjectizer-а, поэтому мы сильно против кардинальных изменений…

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

Под катом небольшой рассказ о том, как в SObjectizer добавлялась одна новая фича. Может быть кому-то из читателей будет интересно посмотреть, как старый фреймворк адаптируется под запросы новых пользователей.

Источник
Загрузка...
3 месяца назад
#

Перевод книги «Социальная архитектура»: Торговые марки для open source проектов



imageТорговые марки. Что они такое, нужны ли они вам и сколько это стоит? Эти вопросы часто возникают при построении open source проекта. Торговые марки могут быть ключом, который защитит проект от недобросовестных людей. Хотя тут мало что советовать. Поэтому вот мой гид по использованию торговых марок в проекте open source. Это практический совет, не юридический, ведь я точно не ваш адвокат.

Немного о торговых марках

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

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

Источник
Загрузка...
2 3 5 6

Авторизация

Пользователи

Zhenya
Лариса Аксиненко
Dmitry Loginov
Dimas Potapov
Ваня Берёзкин
Володя Рудомаха
adanick
Марина Викторовна
Георгiй Москвитинъ