Search
Write a publication
Pull to refresh
0
0
Перикл Фемиди @pfemidi

Домосед

Send message

Пишем модуль ядра Linux: I2C

Reading time15 min
Views39K
Хабр, привет!

Данная статья посвящена разработке I2C (Inter-Integrated Circuit) модуля ядра Linux. Далее описан процесс реализация базовой структуры I2C драйвера, в которую можно легко добавить реализацию необходимого функционала.

Опишем входные данные: I2C блок для нового процессора «зашитый» на ПЛИС, запущенный Linux версии 3.18.19 и периферийные устройства (EEPROM AT24C64 и BME280).

Принцип работы I2C достаточно прост, но если нужно освежить знания, то можно почитать тут.


Рисунок 1. Временная диаграмма сигналов шины I2C
Читать дальше →

Перехват функций в ядре Linux с помощью ftrace

Reading time22 min
Views12K
ниндзя-пингвин,  En3lВ одном проекте, связанном с безопасностью Linux-систем, нам потребовалось перехватывать вызовы важных функций внутри ядра (вроде открытия файлов и запуска процессов) для обеспечения возможности мониторинга активности в системе и превентивного блокирования деятельности подозрительных процессов.

В процессе разработки нам удалось изобрести довольно неплохой подход, позволяющий удобно перехватить любую функцию в ядре по имени и выполнить свой код вокруг её вызовов. Перехватчик можно устанавливать из загружаемого GPL-модуля, без пересборки ядра. Подход поддерживает ядра версий 3.19+ для архитектуры x86_64.
Читать дальше →

Google's Shell Style Guide (на русском)

Reading time14 min
Views24K

Предисловие


Какой Shell использовать


Bash единственный язык shell скриптов, который разрешается использовать для исполняемых файлов.


Скрипты должны начинаться с #!/bin/bash с минимальным набором флагов. Используйте set для установки shell опций, что бы вызов вашего скрипта как bash <script_name> не нарушил его функциональности.


Ограничение всех shell скриптов до bash, дает нам согласованный shell язык, который установлен на всех наших машинах.


Единственное исключение составляет если вы ограничены условиями того под что вы программируете. Одним из примеров могут стать пакеты Solaris SVR4, для которых требуется использование обычного Bourne shell для любых скриптов.


Когда использовать Shell


Shell следует использовать только для небольших утилит или простых скрптов-оберток.


Хотя shell-скриптинг не является языком разработки, он используется для написания различных утилит во всем Google. Это руководство по стилю является скорее признанием его использования, а не предложением использовать его в широком применении.

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

Downclocking оперативной памяти на MacBook

Reading time7 min
Views41K
Хочу поделиться своим опытом апгрейда своего MacBook6,1 A1342 (увеличение памяти до 8Гб, установка SSD) и решении ряда проблем связанных с установкой системы на новый диск и борьба с глюками несовместимости RAM.

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

Как запретить Windows 10 перезагрузку после обновлений

Reading time2 min
Views94K
Всем привет. Удивительно, но ответ на этот вопрос (точнее, «как сделать всё так, чтобы было как раньше») слабо освещён в рунете. Да и в целом готовое решение ещё нужно поискать.
Однако проблема требует решения т.к. система восстанавливает после перезагрузки далеко не все приложения.

Итак:
Читать дальше →

Создание Android приложения для распознавания текста за 10 Минут. Mobile Vision CodeLab

Reading time10 min
Views31K

Видео версия туториала



Оптическое распознавание символов (англ. Optical Character Recognition, сокр. OCR) дает компьютеру возможность читать текст на изображении, позволяя приложениям понимать знаки, статьи, листовки, страницы текста, меню или что угодно в виде текста. Mobile Vision Text API предоставляет разработчикам Android мощную и надежную возможность OCR, которая поддерживает большинство устройств Android и не увеличивает размер вашего приложения.


В этом туториале вы создадите приложение, в котором в процессе видеосъёмки будет распознаваться и воспроизводиться весь текст, попадающий в кадр.

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

Рефакторинг с использованием C++17 std::optional

Reading time6 min
Views17K


В разработке существует множество ситуаций, когда вам надо выразить что-то с помощью "optional" — объекта, который может содержать какое-либо значение, а может и не содержать. Вы можете реализовать опциональный тип с помощью нескольких вариантов, но с помощью C++17 вы сможете реализовать это с помощью наиболее удобного варианта: std::optional.


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


Вступление


Давайте быстро погрузимся в код.


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

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

Использование std::optional в С++17

Reading time11 min
Views96K


Давайте возьмём пару от двух типов <YourType, bool> — что вы можете сделать с композицией подобного рода?


В этой статье я расскажу вам про std::optional — новый вспомогательный тип, добавленный в C++17. Это обёртка для вашего типа и флаг показывает, инициализировано ваше значение или нет. Давайте посмотрим, где это может быть полезно.


Вступление


Добавлением логических флагов к другим типам вы можете достичь то, что называется "Nullable типы". Как было сказано ранее, флаг используется для обозначения того, доступно значение или нет. Такая обёртка выразительно представляет объект, который может быть пустым (не через комментарии :).

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

Горячие клавиши Android Studio, которые могут увеличить вашу производительность на 100%

Reading time2 min
Views48K
Перевод заметки Шикара Ша с medium.com

Вступительный спойлер
Об авторе оригинала: Шикар Ша, Android-разработчик, сертифицированный Google (Shikhar Shah, Google Certified Android Developer).

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

За помощь в устранении синтаксических и пунктационных ошибок спасибо ЗаЕцу ;)

Перевод


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


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

15 советов по работе с Github

Reading time8 min
Views63K

Я 10 лет разрабатываю ПО, участвовал в нескольких open source-проектах и в многочисленных не-open source-проектах, работал в больших и малых командах, и везде мы использовали Github в качестве репозитория версионирования.

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

Разбираемся с артиклями: продвинутый уровень

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

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

11 лучших шрифтов для программирования

Reading time3 min
Views287K
Много статей и сайтов сравнивают шрифты для программирования — всё это отличные ресурсы. Так зачем я опять поднимаю эту тему? Потому что сам всегда терялся в десятках шрифтов и не мог понять, какой лучше. Так что я опробовал много шрифтов и выбрал следующие для вас. Они довольно популярны и их легко получить. И самое главное, все эти шрифты бесплатны!

Я ранжировал шрифты по следующим показателям:

  • Насколько различимы схожие символы, такие как 0O, 1lI.
  • Легко ли читается шрифт (ширина строк, ширина/высота символов).
  • И мои личные предпочтения!

Все скриншоты сделаны в VSCode на одном фрагменте кода. Если не обозначено иное, то везде установлен размер "editor.fontSize": 14.
Читать дальше →

Как перевести речевой аудио-файл в текст с помощью Google translate

Reading time2 min
Views302K


Обычно Google translate используют для перевода речи транслируемой микрофоном.


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


Идея лежала на поверхности и наверняка программы для этого должны были присутствовать. Так -же как сделано в Gogle translate.


Но, гуглением, программы не нашлось, кроме двух сайтов. Которые использовали по уверениям их авторов всю мощь искусственного интеллекта Google.


Первый нашелся русскоязычный сайт https://speechpad.ru/blog/windows-integration/



Но, как бы не было обидно, магия не сработала…

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

Разбираемся с артиклями: базовые правила

Reading time4 min
Views37K
Артикли в английском языке – одна из самых сложных тем. Если при изучении слов мы можем опираться на мнемотехнику, схожее звучание или даже написание слов, то в случае с артиклями нам деваться некуда: в русском языке их попросту нет. Так что придется изучать правила. Их довольно много, и лучше поделить их на категории базовых и продвинутых. В этой шпаргалке рассмотрим базовые правила.

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

8088 MPH: мы сломаем все ваши эмуляторы

Reading time16 min
Views16K
image

Одним из пунктов списка моих желаний после прочтения первого отчета с пати в 1991 году стало посещение европейской демопати и участие в соревнованиях compo. Я участвовал в NAID ’96 и даже занял там место, но моей мечтой всегда было соревноваться с лучшими из лучших. Я рад объявить о том, что спустя шесть месяцев упорной работы с хорошими друзьями и невероятно талантливыми людьми нам это удалось. Наше демо 8088 MPH победило в oldskool demo compo Revision 2015. (Моей личной победой стало то, что наше демо показали в compo последним, что стало знаком уважения организаторов.) 7 апреля 2015 года в мире не было эмуляторов IBM PC, способных правильно запускать наше демо; они зависали или вываливались ещё до завершения демо, а цвета были искажены. То же относится и ко всему остальному железу, кроме целевого (см. ниже). Чтобы увидеть, что такое 8088 MPH, я рекомендую вам посмотреть видео записи демо, запущенного на реальном железе:


В демо так много технологических открытий, сделанных впервые в мире, а мы эксплуатируем железо так, как никто до нас не додумывался, поэтому будет честным рассказать, как же нам это удалось. Одной из моих должностей была «организатор» демо, поэтому я расскажу о нём сцена за сценой, вкратце объяснив основы каждого трюка. О частях, написанный мной, я расскажу чуть подробнее, но для глубокого анализа технологий я буду обновлять этот пост, чтобы можно было оставить ссылки на посты reenigne, VileR и Scali. Мы надеемся, что этот рассказ привлечёт интерес к «олдскульному» программированию ПО для платформы. После прочтения этого обзорного поста рекомендую пройти по ссылкам на статьи, где подробнее рассматриваются отдельные части демо.

Неформальный и формальный стили речи

Reading time3 min
Views37K
Cтили речи существуют во всех языках, и английский не исключение. Овладеть стилистикой необходимо каждому, кто стремится освоить язык и говорить на нем также естественно, как его носители.

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

1000+1 способ определения того, являются ли все элементы в списке одинаковыми

Reading time7 min
Views49K
В жизни у нас всегда есть выбор, знаем мы о нем или нет. То же самое происходит и в кодировании. Существует множество способов, с помощью которых мы можем подойти к какой-то конкретной задаче. Мы можем изначально не рассматривать эти способы или не иметь о них никакого понятия, но они существуют. Быть программистом — это не просто знать язык и процесс написания кода. Очень часто это значит быть самой креативной версией себя, рассматривая даже то, над чем Вы раньше не задумывались. И на этой ноте я хотел бы представить себя. Здравствуйте! Меня зовут Алекс, я основатель CheckiO, и я уже давно занимаюсь творческими аспектами этого проекта.

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

Самые трудные пары английских времен

Reading time8 min
Views38K
С грамматикой в предыдущей статье разобрались, теперь посмотрим, с какими трудностями сталкивается студент, для которого русский – родной язык. Сразу отметим, что сравнивать языки бесполезно: русский и английский принадлежат к разным группам. Аргумент «а по-русски не так!», к сожалению, бесполезен. Естественно, не так, ведь русский – славянский язык, а английский – германский. Мы можем лишь стараться проводить параллели, но одинаковыми правила не будут никогда.

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

Как сегодня создаются 64k intro: погружение в Immersion

Reading time14 min
Views25K
image


В декабре прошлого года мы наконец-то закончили наш проект. В этом видео показана наша последняя работа — четырёхминутная анимация «Immersion». Точнее, это запись того, что обычно называется 64k-интро. Но подробнее об этом чуть позже.


Работа над проектом заняла лучшие свободные часы последних двух лет жизни. Всё это началось во время проведения Revision 2015, большого мероприятия, устраиваемого каждый год в Германии во время пасхальных каникул. Мы вдвоём болтали по дороге из отеля в место проведения мероприятия. Предыдущим вечером уровень конкуренции в области 64kB intro оказался высоким. Очень высоким. Опытная и хорошо известная венгерская группа Conspiracy наконец вернулась с серьёзной, потрясающей работой. Наш лучший враг Approximate идеально успел по времени с завершением цикла выпуска и показал значительные улучшения в сторителлинге. Продуктивная группа Mercury обрела собственный зрелый стиль дизайна в интро, которое не оставляло сомнений в своей победе.

Используем GPG для шифрования сообщений и файлов

Reading time9 min
Views194K

Кратко о том, как создавать ключи, шифровать и подписывать файлы и отправлять ключи на сервер ключей.



GPG (также известный как GnuPG) создавался как свободная альтернатива несвободному PGP. GPG используется для шифрования информации и предоставляет различные алгоритмы (RSA, DSA, AES и др.) для решения этой задачи.

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

Information

Rating
7,620-th
Location
Москва и Московская обл., Россия
Registered
Activity