Pull to refresh
-1
0

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

Send message

Как работает Android, часть 4

Reading time26 min
Views94K


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

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

Что есть и чего нет в Go. Часть 1

Reading time4 min
Views9.1K
Всем привет, в преддверии старта нового потока по курсу «Разработчик Golang» хотим поделиться с вами переводом интересной статьи, в первой части которой разбираются элементы, которые есть в Go. Поехали.



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

Перед прочтением: Выше приведен отрывок из книги Алан А. А. Донована и Брайана В. Кернигана «Язык программирования Go». страница XIV. Пункты, упомянутые ниже, являются кратким и несколько неполным объяснением терминов, используемых при проектировании языка программирования. Я попытался объяснить все концепции с точки зрения программирования на Go. Все пункты, упомянутые ниже, не моего авторства, они взяты из других выдержек. Я никоим образом не защищаю Go или любой другой язык.
Читать дальше →
Total votes 36: ↑21 and ↓15+6
Comments10

Golang: специфические вопросы производительности

Reading time9 min
Views13K
Язык Go набирает популярность. Настолько уверенно, что появляется все больше конференций, например, GolangConf, а язык входит в десятку самых высокооплачиваемых технологий. Поэтому уже имеет смысл разговаривать о его специфических проблемах, например, производительности. Кроме общих для всех компилируемых языков проблем, у Go есть и свои собственные. Они связаны с оптимизатором, стеком, системой типов и моделью многозадачности. Способы их решения и обхода иногда бывают весьма специфическими.

Даниил Подольский, хоть и евангелист Go, тоже встречает в нем много странного. Все странное и, главное, интересное, собирает и тестирует, а потом рассказывает об этом на HighLoad++. В расшифровке доклада будут цифры, графики, примеры кода, результаты работы профайлера, сравнение производительности одних и тех же алгоритмов на разных языках — и все остальное, за что мы так ненавидим слово «оптимизация». В расшифровке не будет откровений — откуда же они в таком простом языке, — и всего, о чем можно прочесть в газетах.


Total votes 35: ↑32 and ↓3+29
Comments6

Конечный автомат (он же машина состояний) на чистом С

Reading time5 min
Views129K
Почти каждый микроконтроллерщик сталкивался с громадными switch-case и мучительно их отлаживал.
И много кто, начиная писать реализацию какого-либо протокола, задумывался как написать её красиво, изящно, так чтобы через месяц было понятно что ты имел в виду, чтобы она не отжирала всю память и вообще какала бабочками.
И вот тут на помощь приходят машины состояний, они же конечные автоматы (те самые которые используются в регулярных выражениях).

Собственно через регулярные выражения я к ним и пришёл.
Читать дальше →
Total votes 51: ↑48 and ↓3+45
Comments50

Откуда этот конфиг? [Debian/Ubuntu]

Reading time3 min
Views27K

Цель этого поста: показать технику отладки в debian/ubuntu, связанную с "поиском первоисточника" в системном конфигурационном файле.


Тестовый пример: после долгих издевательств над tar.gz копией установленной ОС и после её восстановления и установки апдейтов мы получаем сообщение:


update-initramfs: Generating /boot/initrd.img-4.15.0-54-generic
W: initramfs-tools configuration sets RESUME=/dev/mapper/U1563304817I0-swap
W: but no matching swap device is available.
I: The initramfs will attempt to resume from /dev/dm-1
I: (/dev/mapper/foobar-swap)
I: Set the RESUME variable to override this.

Цель: понять, откуда это значение (U1563304817I0) пришло и как его правильно поменять. Это первый попавшийся пример, не особо интересный сам по себе, но удобный, чтобы показать практические методы работы с Linux.


Шаг номер 1: Откуда пришёл RESUME?

Читать дальше →
Total votes 58: ↑57 and ↓1+56
Comments24

Рейтинг площадок дополнительного образования в ИТ: по результатам исследования «Моего круга»

Reading time6 min
Views117K


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

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

Надеемся, наше исследование подскажет специалистам, куда лучше идти учиться, а школам поможет понять свои текущие сильные и слабые стороны и стать лучше.
Читать дальше →
Total votes 47: ↑46 and ↓1+45
Comments29

Как потратить своё время и ресурс SSD впустую? Легко и просто

Reading time14 min
Views122K
«Тестировать нельзя диагностировать» – куда бы вы поставили запятую в данном предложении? Надеемся, что после прочтения данного материала вы без проблем можете чётко дать ответ на этот вопрос. Многие пользователи когда-либо сталкивались с потерей данных по той или иной причине, будь то программная или аппаратная проблема самого накопителя или же нестандартное физическое воздействие на него, если вы понимаете, о чём мы. Но именно о физических повреждениях сегодня речь и не пойдёт. Поговорим мы как раз о том, что от наших рук не зависит. Стоит ли тестировать SSD каждый день/неделю/месяц или это пустая трата его ресурса? А чем их вообще тестировать? Получая определённые результаты, вы правильно их понимаете? И как можно просто и быстро убедиться, что диск в порядке или ваши данные под угрозой?


Читать дальше →
Total votes 19: ↑16 and ↓3+13
Comments69

Альтернативы Raspberry Pi

Reading time11 min
Views132K
29 февраля 2012 наш мир немного изменился к лучшему. Raspberry Pi Foundation анонсировал начало продаж маленьких одноплатных компьютеров под маркой Raspberry Pi. В начале продаж купить устройство было непросто, но понемногу рынок насытился и с июля 2012 вы наконец могли просто пойти в магазин и купить или заказать через интернет первую «Малинку», Raspberry Pi Model B — одноплатный Linux-компьютер с 700 МГц процессором, 0.5 Гбайт ОЗУ, USB, Ethernet и 26 выводами GPIO, позволяющими подключать внешние платы, устройства ввода-вывода и исполнительные устройства. Устройство, построенное на базе относительно недорогой четырехслойной платы, с низкой себестоимостью, с ценой для конечного потребителя $35, сделанное настолько хорошо, что альфа-версия Raspberry Pi Model B стала победителем номинации «Hardware Design» на ARM TechCon 2011.


Читать дальше →
Total votes 59: ↑53 and ↓6+47
Comments158

Обзор 98 одноплатных компьютеров. Часть 4

Reading time14 min
Views46K
Часть 1
Часть 2
Часть 3
Часть 4

Parallella



Компания/проект — Adapteva, Parallella.org
Обзор LinuxGizmos
Страница продукта
CPU — Xilinx Zynq-7020 или -7010 SoC (2x Cortex-A9 @ 667MHz plus FPGA); 16-core Epiphany RISC chip
Память — 1GB DDR3 RAM
Цена — $99

Плата предназначена для построения энергоэффективных серверных кластеров и исследований в области параллелизма, и построена на базе Zynq ARM/FPGA SoC работающего под управлением дистрибутива Ubuntu 15.04, названного Parabuntu, а также «доморощенного» 16-ядерного сопроцессора Epiphany. Порты включают microSD, GbE, micro-HDMI, и два USB. Четыре 60-pin разъёма служат для расширения ввода-вывода и связаны с FPGA и с чипом Epiphany. Adapteva также предлагает за $75 версию Micro-Server с Zynq-7010, у которой нет USB, HDMI, и расширений I/O. В прошлом году также был выпущен корпус Parallella Aluminum Case за $29.50 с теплорассеивающей пластиной, но сейчас его нет в продаже. Новый чип Epiphany-V, содержащий 4.5 млрд. транзисторов должен был выйти уже несколько месяцев назад.
Читать дальше →
Total votes 22: ↑22 and ↓0+22
Comments28

Читаем даташиты 2: SPI на STM32; ШИМ, таймеры и прерывания на STM8

Reading time24 min
Views39K


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


Сегодня я покажу, как с помощью даташитов решить довольно простые, но необходимые для множества проектов задачи на контроллерах STM32 (Blue Pill) и STM8. Все демо-проекты посвящены моим любимым светодиодам, зажигать мы их будем в больших количествах, для чего придется задействовать всякую интересную периферию.

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

Начинаем изучать Cortex-M на примере STM32, часть 2

Reading time21 min
Views166K
Данная статья является продолжением цикла по программированию микроконтроллеров на базе ядра Cortex-M.
Первую статью можно прочитать здесь:
Начинаем изучать Cortex-M на примере STM32
Задачей статей является подробное описание особенностей, возникающих при программировании МК. Материал не предназначен для желающих за 10 минут запустить пример мигания светодиодом. Я постараюсь подробно описать то, что часто скрывают от новичков, чтобы их не напугать.

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

Основной акцент сделан на изучение документации на ядро Cortex-M и документации на конкретный контроллер.
На этот раз речь пойдет про прерывания, а так же будут затронуты некоторые вопросы архитектуры памяти и структуры прошивки МК.
Продолжение под катом
Total votes 29: ↑28 and ↓1+27
Comments33

Дебаггинг в реальном времени через JTAG/SWJ-DP для микроконтроллеров на ядре ARM Cortex-M

Reading time4 min
Views39K

С некоторых пор фирма Segger предлагает технологию Real Time Terminal (RTT) для своих JTAG адаптеров J-Link. Суть ее в том, что программа на микроконтроллере может выводить и принимать отладочную информацию из JTAG/SWJ-DP порта, как это обычно делается через UART. И тогда нам больше не нужен реальный отладочный UART. Далее чуть подробнее о возможностях этой технологии.
Читать дальше →
Total votes 25: ↑24 and ↓1+23
Comments1

Где хранятся ваши константы на микроконтроллере CortexM (на примере С++ IAR компилятора)

Reading time18 min
Views22K
Я обучаю своих студентов работе с микроконтроллером STM32F411RE, на борту которого имеется аж целых 512 кБайт ROM и 128 кБайт ОЗУ
Обычно на этом микроконтроллере в ROM память записывается программа, а в RAM изменяемые данные и очень часто нужно сделать так, чтобы константы лежали в ROM.
В микроконтроллере STM32F411RE, ROM память расположена по адресам с 0x08000000...0x0807FFFF, а RAM с 0x20000000...0x2001FFFF.

И если все настройки линкера правильные, студент рассчитывает, что вот в таком незамысловатом коде его константа лежит в ROM:

class WantToBeInROM
{
private:
  int i;
public:
  WantToBeInROM(int value): i(value) {}
  int Get() const
  {
    return i;
  }
};

const WantToBeInROM myConstInROM(10);

int main()
{  
  std::cout << &myConstInROM << std::endl ;
}

Вы тоже можете пробовать ответить на вопрос: где лежит константа myConstInROM в ROM или в RAM?

Если вы ответили на этот вопрос, что в ROM, поздравляю вас, на самом деле скорее всего вы не правы, константа в общем случае будет лежать в RAM и чтобы разобраться, как правильно и законно расположить ваши константы в ROM — добро пожаловать под кат.
Читать дальше →
Total votes 58: ↑57 and ↓1+56
Comments59

Тотальный апгрейд MacBook: замена процессора

Reading time2 min
Views162K
Большинство владельцев ноутбуков Apple знает, что процессор в macbook-ах распаян на плате и не подлежит замене. Поэтому при покупке мака нужно сразу выбирать себе комплектацию с желаемым процессором.

Но эта информация не совсем верна. Да, процессор действительно распаян, но заменить его можно, как обычный BGA чип. И даже если заменить на более мощный, то все будет прекрасно работать. Единственное условие — процессор должен быть совместимой серии, т.е. иметь такую же частоту системной шины. Это необходимо для нормальной работы с чипсетом на системной плате. А другие характеристики проца: частота и кэш- не имеют значения. Таким образом можно получить апгрейд-прокачать проц.
Читать дальше →
Total votes 72: ↑62 and ↓10+52
Comments40

Ускорение MicroPython

Reading time4 min
Views26K
MicroPython — реализация языка программирования Python для микроконтроллеров, даёт возможность аудитории этого языка, используя знакомый синтаксис и принципы программирования работать с небольшими вычислительными устройствами.

В своей работе я использую MicroPython для прототипирования, быстрой проверки идей и для создания небольших стендов. Благодаря REPL и простому синтаксису MicroPython также отлично подходит для DIY проектов и для обучения программированию.

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

Но в некоторых аспектах, скорость работы и время реакции важно и встаёт вопрос о целесообразности использования MicroPython. Поэтому я провел небольшое исследование, на которое меня вдохновило видео с выступления создателя MicroPython Damien George. Мне стало интересно как быстро программа, написанная на Micropython будет реагировать на входное воздействие.

Подопытным устройством будет микроконтроллер ESP8266, на плате NodeMcu с MicroPython версии esp8266-2018511-v1.9.4 на борту.


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

Беспроводные сети ZigBee. Часть 2 [Работа с радиомодулями ETRX35X]

Reading time22 min
Views35K

Введение



В прошлой статье были рассмотрены основные особенности беспроводной технологии ZigBee. В этой части мы поговорим о том, как быстро начать работу с данной технологией на практике. Для этого были выбраны модули ETRX357, имеющие встроенную прошивку, которая позволяет работать с сетевыми функциями и управлять аналоговой и цифровой периферией с помощью набора AT-команд. Также в статье будут более подробно разобраны вопросы касающиеся типов устройств в сети ZigBee и безопасности сети. В конце мы соберем сеть сбора данных, которая будет получать информацию о температуре от нескольких беспроводных устройств.

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

Беспроводные сети ZigBee. Часть 1 [Вводная]

Reading time9 min
Views102K

Введение


Сейчас о концепции IoT («интернета вещей») говорят везде. Появляется «умная» бытовая техника, которая может подключиться к сети (Bluetooth/Wi-Fi) по беспроводному интерфейсу и начать рассылать уведомления о том, что задача по стирке/готовке еды/кипячению воды завершена и неплохо бы что-то с этим сделать. Большинство таких «умных» устройств получает питание непосредственно из электросети. Но как быть, если хочется получать информацию от беспроводного термометра и при этом не менять батарейку каждую неделю? Или иметь беспроводной выключатель с небольшим аккумулятором для которого не понадобится штробить стены? И хорошо бы объединить такие устройства в единую распределенную сеть, которой можно управлять удаленно и которая сама, основываясь на показаниях датчиков/извещателей/счетчиков, могла бы принимать какие-то решения.

Специально для решения таких задач была создана беспроводная технология ZigBee, о которой мы и начнем разговор.

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

Хакаем CAN шину авто. Виртуальная панель приборов

Reading time14 min
Views219K


В первой статье «Хакаем CAN шину авто для голосового управления» я подключался непосредственно к CAN шине Comfort в двери своего авто и исследовал пролетающий траффик, это позволило определить команды управления стеклоподъемниками, центральным замком и др.

В этой статье я расскажу как собрать свою уникальную виртуальную или цифровую панель приборов и получить данные с любых датчиков в автомобилях группы VAG (Volkswagen, Audi, Seat, Skoda).

Мною был собран новый CAN сниффер и CAN шилд для Raspberry Pi на базе модуля MCP2515 TJA1050 Niren, полученные с их помощью данные я применил в разработке цифровой панели приборов с использованием 7″ дисплея для Raspberry Pi. Помимо простого отображения информации цифровая панель реагирует на кнопки подрулевого переключателя и другие события в машине.

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

  1. CAN сниффер из Arduino Uno
  2. Подслушиваем запросы с помощью диагностической системы VAG-COM (VCDS)
  3. Разработка панели приборов на основе Raspberry Pi и 7″ дисплея
  4. Софт панели приборов на Python и Kivy (UI framework)
  5. Видео работы цифровой панели приборов на базе Raspberry Pi

Под катом полная реализация проекта, будет интересно!
Total votes 195: ↑192 and ↓3+189
Comments224

Как и зачем читать даташиты, если микроконтроллеры – ваше хобби

Reading time10 min
Views49K


Микроэлектроника – модное увлечение последних лет благодаря волшебному Arduino. Но вот беда: при должном интересе перерасти DigitalWrite() получается быстро, а что делать дальше – не совсем ясно. Разработчики Arduino приложили немало усилий для снижения порога вхождения в свою экосистему, но за ее пределами по-прежнему колышется темный лес суровой схемотехники, малодоступный любителю.


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


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

Читать дальше →
Total votes 34: ↑32 and ↓2+30
Comments29

Ловушка (тарпит) для входящих SSH-соединений

Reading time4 min
Views38K
Не секрет, что интернет — очень враждебная среда. Как только вы поднимаете сервер, он мгновенно подвергается массированным атакам и множественным сканированиям. На примере ханипота от безопасников можно оценить масштаб этого мусорного трафика. Фактически, на среднем сервере 99% трафика может быть вредоносным.

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

Чаще всего тарпиты применяют для защиты. Технику впервые разработали для защиты от компьютерных червей. А сейчас её можно использовать, чтобы испортить жизнь спамерам и исследователям, которые занимаются широким сканированием всех IP-адресов подряд (примеры на Хабре: Австрия, Украина).
Читать дальше →
Total votes 86: ↑84 and ↓2+82
Comments66

Information

Rating
Does not participate
Registered
Activity