Pull to refresh
1
0
Send message

Разработка драйвера сетевого адаптера для Linux. Часть 1

Reading time25 min
Views25K

В этой статье мы рассмотрим как устроен драйвер сетевого адаптера для Linux.

Cтатью разделим на две части.

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

Хотя при разработке драйверов необходимо использовать стандартные ядерные фреймворки, такие как clock, reset, libphy и пр., поначалу мы будем работать с адаптером напрямую через регистры состояния и управления. Это позволит нам детально разобраться с аппаратной частью.

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

Нам нужна макетная плата с сетевым адаптером, на которую можно поставить Linux. Возьмем Orange Pi Zero на платформе Allwinner H2+. В состав платформы входят четыре процессорных ядра Cortex-A7, поддерживается ОЗУ стандартов LPDDR2, LPDDR3, DDR3, широкий спектр соединений и интерфейсов, в том числе сетевой адаптер, для которого мы будем разрабатывать драйвер. Подробное описание платформы тут, документация на платформу Allwinner H3 Datasheet.

Читать далее
Total votes 71: ↑71 and ↓0+71
Comments19

Дилетант в opensource — lessons learned за 3 года

Reading time16 min
Views39K

Давно, в 2014 году я сделал для себя небольшую утилитку, чтобы перегонять C#-вьюмодели в TypeScript-код. Она сэкономила мне немало времени и нервов. И вот, в сентябре 2015 я решил оформить свои "эксперименты на коленке" в некую удобоваримую форму и вылить их на GitHub. Так началось моё дилетантское участие в разработке открытого ПО. Время шло. И вот, вчера в репозитории с этим проектом, наконец, появился юбилейный, трёхсотый коммит. В связи с этим знаменательным событием, я бы хотел поделиться своим дилетантским опытом о том, с чем придётся столкнуться, если вам вдруг взбредёт в голову разработать что-то "на благо развития индустрии". Я изложу некоторые цифры, расскажу несколько прохладных историй, а так же поделюсь впечатлениями каково это — написать и поддерживать opensource-проект без мам, пап и кредитов поддержки компании, оплаты и… и свободного времени. Заходите под кат, присаживайтесь, мы начинаем.

Читать дальше →
Total votes 111: ↑110 and ↓1+109
Comments154

HEIF — новый стандартный формат хранения изображений в iOS и MacOS

Reading time4 min
Views31K

В этом году в операционных системах Apple изменился формат сохранения изображений по умолчанию. С выходом iOS 11 и MacOS High Sierra миллионы пользователей продукции яблочного гиганта получили возможность использовать новый формат хранения изображений HEIF. Он пришел на смену старому доброму JPEG, хотя многие и не знают, что это произошло. По расчетам Apple пользователи должны получить значительную экономию места на диске (до 50%) за счет большей эффективности сжатия при лучшем качестве картинки.

Читать дальше →
Total votes 12: ↑12 and ↓0+12
Comments12

Непрерывная интеграция (CI) для GitHub проектов на С/C++ с CMake-сборкой

Reading time15 min
Views31K
Continuous Integration

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


Данная статья — инструкция по прикручиванию базовой непрерывной интеграции (build-test-deploy) к гитхабовским C/C++ проектам с CMake сборкой — по непонятным причинам, на Хабре такого до сих пор не проскальзывало. Впрочем, если моё гугл-фу подвело меня, и таки проскальзывало — не беда. Лишний туториал, описывающий всё под несколько другим углом и предостерегающий от неповторимого набора набитых автором шишек, совершенно точно не повредит.

Читать дальше →
Total votes 20: ↑19 and ↓1+18
Comments12

Релиз кросс-платформенного XAML UI-фреймворка AvaloniaUI 0.5

Reading time3 min
Views20K

Состоялся релиз версии 0.5 кросслплатформенного XAML UI фреймворка AvaloniaUI (раннее назывался Perspex). Фреймворк сделан по тем же принципам, что и WPF/UWP, т. е. используется XAML, биндинги и шаблонизированные элементы управления. На текущий момент это единственный способ сделать UI на настоящем XAML, который будет работать на Windows, OS X и Linux (так же имеется экспериментальная поддержка iOS и Android).


КПДВ


Каталог встроенных контролов (gif 3MB)


Начать работать с фреймворком можно скачав дополнение для Visual Studio 2017 и создав проект из шаблона. Так же стоит ознакомиться с документацией на wiki.


В этом релизе: Поддержка .NET Core, переход на GTK3 для *nix-систем, поддержка вывода через Linux fbdev, система расширений, исправлено множество ошибок.

Читать дальше →
Total votes 41: ↑40 and ↓1+39
Comments56

DevOps на службе человека

Reading time7 min
Views16K

Технологии шаг за шагом отнимают наши рабочие места и грозят добраться до самого ценного — Ctr-C из Stack Overflow и Ctrl-V в родной IDE. Но к счастью, ни одна нейронная сеть пока не научилась программировать лучше тебя. Сегодня мы поговорим о том, как можно использовать DevOps, чтобы избавить от рутины целую команду мобильных разработчиков и даже тебя лично.



Читать дальше →
Total votes 25: ↑25 and ↓0+25
Comments3

Отправка файлов в приложение Xamarin.Forms. Часть 1

Reading time6 min
Views5.7K
Пересылка файлов между приложениями является довольно специфической функцией для ОС. И это то, что лучше не пытаться сделать в Xamarin.Forms, не так ли? На самом деле сделать это довольно просто, и этот пост продемонстрирует как заполучить эту функцию и запустить в iOS (в следующем посте будет рассмотрен случай с Android и, при необходимости, с UWP).


Читать дальше →
Total votes 15: ↑13 and ↓2+11
Comments0

Установка неподписанных программ на устройства с iOS 9 без Jailbreak

Reading time3 min
Views117K
Дорого дня, уважаемые хабражители!

Сегодня я расскажу вам о том, как можно установить неподписанное (или плохо подписанное) приложение на устройство с iOS 9. Да, без Jailbreak. Да, бесплатно. Нужен лишь компьютер с OS X и Apple ID. Как такое возможно? Читаем под катом.



Осторожно! Много картинок!
Читать дальше →
Total votes 40: ↑33 and ↓7+26
Comments33

Авторизация в ASP.NET Core MVC

Reading time14 min
Views86K

Logo designed by Pablo Iglesias.


В статье описаны паттерны и приемы авторизации в ASP.NET Core MVC. Подчеркну, что рассматривается только авторизация (проверка прав пользователя) а не аутентификация, поэтому в статье не будет использования ASP.NET Identity, протоколов аутентификации и т.п. Будет много примеров серверного кода, небольшой экскурс вглубь исходников Core MVC, и тестовый проект (ссылка в конце статьи). Приглашаю интересующихся под кат.


Содержание:



Читать дальше →
Total votes 28: ↑28 and ↓0+28
Comments5

Что разработчики Xamarin должны знать на начало 2017 года

Reading time8 min
Views34K
Представляем вам пятничную подборку полезных гайдов и шпаргалок от Джеймса Монтемагно для разработчиков разного уровня.


Читать дальше →
Total votes 34: ↑33 and ↓1+32
Comments41

Наблюдаемые модели в Realm Xamarin

Reading time6 min
Views7.1K
Если вас раздражает аспект обновления данных, хранящихся в моделях, и вы думаете о том, как было бы здорово, если бы модель могла быть более самостоятельной и уведомлять об изменениях, добро пожаловать под кат.


Читать дальше →
Total votes 22: ↑22 and ↓0+22
Comments9

О сравнении объектов по значению — 2, или Особенности реализации метода Equals

Reading time9 min
Views12K
В предыдущей публикации мы рассмотрели общие принципы реализации минимально необходимых доработок класса для возможности сравнения объектов класса по значению с помощью стандартной инфраструктуры платформы .NET.

Эти доработки включают перекрытие методов Object.Equals(Object) и Object.GetHashCode().

Остановимся подробнее на особенностях реализации метода Object.Equals(Object) для соответствия следующему требованию в документации:

x.Equals(y) returns the same value as y.Equals(x).

Класс Person, созданный в предыдущей публикации, содержит следующую реализацию метода Equals(Object):

Person.Equals(Object)
public override bool Equals(object obj)
{
    if ((object)this == obj)
        return true;

    var other = obj as Person;

    if ((object)other == null)
        return false;

    return EqualsHelper(this, other);
}

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

В соответствии с примером, приведенным в документации, приведение производится с помощью оператора as. Проверим, дает ли это корректный результат.
Читать дальше →
Total votes 21: ↑16 and ↓5+11
Comments13

О сравнении объектов по значению — 1: Beginning

Reading time7 min
Views27K

Общеизвестно, что в объектной модели .NET, как и во многих других программных платформах, сравнивать объекты можно по ссылке и по значению.


По умолчанию два объекта считаются равными, если соответствующие переменные содержат одну и ту же ссылку. В противном случае объекты считаются неравными.

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

Пусть есть класс Person, содержащий персональные данные — имя, фамилию, и дату рождения персоны.


На примере этого класса рассмотрим:

  1. минимально необходимый набор доработок класса для того, чтобы объекты этого класса сравнивались по значению с помощью стандартной инфраструктуры .NET;
  2. минимально необходимый и достаточный набор доработок, чтобы объекты этого класса всегда сравнивались по значению с помощью стандартной инфраструктуры .NET — если явно не указано, что сравнение должно производиться по ссылке.

Для каждого случая рассмотрим, каким именно образом лучше реализовать сравнение объектов по значению, чтобы получился согласованный и, насколько это возможно, компактный, copy-paste free, производительный код.

Задача является не настолько тривиальной, насколько это может показаться на первый взгляд.

А также рассмотрим, какие улучшения могли бы быть внесены в платформу, чтобы упростить реализацию этой задачи.
Читать дальше →
Total votes 24: ↑17 and ↓7+10
Comments58

MassTransit. Сервисная шина для обмена сообщениями на основе сервера очередей RabbitMQ (MSMQ) для .Net

Reading time8 min
Views45K
MassTransit
Впервые я услышал о библиотеке MassTransit (MT) около года назад от экс-коллеги, зашедшего в наш офис для обмена опытом. Компания, в которую он устроился, использовала MT для уменьшения связности между модулями разрабатываемого ими сервиса и, поскольку высокая связность начала превращаться в проблему и для нас, чужой опыт оказался нам очень кстати. Помимо уменьшения связности путем перехода на событийную модель взаимодействия между модулями, MT пригодился нам и для распределения ресурсоемких задач между несколькими процессами.

Читать дальше →
Total votes 22: ↑22 and ↓0+22
Comments9

Мультипротокольный бот через Microsoft Bot Connector REST API v3.0

Reading time3 min
Views9.8K
В этой статье я хочу описать простой пример работы мультипротокольного бота через Microsoft Bot Connector API — v3.0. На тему skype подобных ботов уже есть статьи на Хабре: «Как создать своего бота для Skype. Что не написано в документации» от and7ey и «Hello, Bot! Чат-боты – следующее поколение приложений?» от shwars. Но в первой идёт речь про работу через apis.skype и описанный там вариант не мультипротокольный, а во второй описана реализация через C#, а я в него не умею.

Кому и зачем нужна эта статья


Во-первых, «тому парню», который хочет сделать своего бота, но не умеет в C#, а умеет в REST.
Читать дальше →
Total votes 12: ↑11 and ↓1+10
Comments10

Создаем мобильную игру на Monogame, решая типичные проблемы начинающего разработчика

Reading time10 min
Views32K
Целью данной статьи является систематизация материалов для создания простых игр на фреймворке Monogame. В статье будут рассмотрены решения типичных задач, с которыми приходится сталкиваться всем разработчикам при создании игр для мобильных платформ: независимость текстур от разрешения экрана, создание меню и смена игровых сцен (экранов), нюансы работы со звуком и шрифтами, сохранение рекордов. В статье приведены примеры кода, а так же даны ссылки на полезные и актуальные источники информации по Monogame и разработке под платформу Windows в целом, ну и конечно, моя история создания своих первых игр.
Читать дальше →
Total votes 20: ↑19 and ↓1+18
Comments13

Гарвардский курс по основам программирования CS50 теперь на русском

Reading time4 min
Views177K
image

Предыстория: кто мы и как дошли до жизни такой

Мы — команда проекта JavaRush. А JavaRush, кто еще не в курсе, — это полностью автоматизированный обучающий онлайн-курс по Java. Когда-то давно, именно благодаря поддержке хаброюзеров и статьям на хабре, JavaRush и появился. В то время мы собирались переучить на программистов миллион человек.
Читать дальше →
Total votes 47: ↑47 and ↓0+47
Comments38

Выпуск фреймворка Qt 5.7

Reading time4 min
Views33K

Вчера, спустя всего 3 месяца с момента предыдущего значительного выпуска, вышла версия 5.7 кроссплатформенного фреймворка Qt.


Qt позволяет разрабатывать приложения при помощи C++ и декларативного языка программирования QML, поддерживает все основные десктопные и мобильные платформы, а также некоторые встраиваемые и имеет открытый исходный код. Существует коммерческая версия Qt, содержащая дополнительные проприетарные модули.


Новый выпуск принес смену лицензии, открытие кода проприетарных модулей, переход на C++11, стабилизация некоторых экспериментальных модулей, а также новые экспериментальные модули и удаление устаревших.



Читать дальше →
Total votes 34: ↑33 and ↓1+32
Comments44

Windows 10 Digest. Ноябрь-декабрь 2015

Reading time4 min
Views14K
Всем привет! Мы тут подумали, что было бы неплохо периодически собирать в одном месте разные технологические новости вокруг платформы Windows 10.

Короткое видео про платформу, в котором мы рассказываем, что из себя представляет Windows 10 с точки зрения разработчика

Посему, встречайте наш первый обзор за ноябрь-декабрь уходящего года: от большого обновления самой операционной системы, нового SDK и новых фишек Windows Store до конкурса идей для HoloLens.
Читать дальше →
Total votes 13: ↑10 and ↓3+7
Comments5
1

Information

Rating
Does not participate
Registered
Activity