Search
Write a publication
Pull to refresh
54
0.1

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

Send message

SQL ключи во всех подробностях

Reading time18 min
Views264K
В Интернете полно догматических заповедей о том, как нужно выбирать и использовать ключи в реляционных базах данных. Иногда споры даже переходят в холивары: использовать естественные или искусственные ключи? Автоинкрементные целые или UUID?

Прочитав шестьдесят четыре статьи, пролистав разделы пяти книг и задав кучу вопросов в IRC и StackOverflow, я (автор оригинальной статьи Joe «begriffs» Nelson), как мне кажется, собрал куски паззла воедино и теперь смогу примирить противников. Многие споры относительно ключей возникают, на самом деле, из-за неправильного понимания чужой точки зрения.

Содержание



Давайте разделим проблему на части, а в конце соберём её снова. Для начала зададим вопрос – что же такое «ключ»?
Читать дальше →

Мобильные устройства изнутри. Изменение разметки памяти планшета

Reading time6 min
Views11K

Изменение разметки памяти планшета



1.Введение.


Как-то попался мне в руки планшет YB1-X90L от Lenovo, выполненный на чипе от Intel:

Рис.1. Планшет YB1-X90

Я попытался выполнить над ним некоторые, в принципе, я бы сказал, стандартные модификации для мобильного устройства (МУ), попавшего в руки разработчика:

  • разблокировать загрузчик;
  • установить custom recovery;
  • получить ROOT;
  • посмотреть разметку памяти;
  • ну и общие исследования возможностей работы.

Все пункты плана были успешно выполнены. Одним из незапланированных пунктов стало исследование раздела разметки, который я назвал GPT-разделом Intel-типа.

Тем не менее, на многих сайтах очень популярна тема по изменению разметки МУ, выполненной по GPT-схеме, тем более, если это GPT-раздел Intel-типа. Получается, что этот вопрос, несмотря на теоретические выкладки, так и остается до сих пор не закрытым… Вот я и решил воспользоваться моментом, что у меня на руках имеется свободное МУ, которое можно немного «помучать», и провести натурные испытания своих теоретических познаний. Короче, я задумал изменить разметку памяти…

Перед началом выполнения работ я снял все, что можно по существующей разметке: файлы partitions, dev/block/by-name/ и образ GPT-раздела.

Что мы имеем:

  • планшет, имеющий стоковую прошивку;
  • образ GPT-раздела Intel-типа;
  • файл partitions, снятый с реально работающего МУ.

Что надо: для своих экспериментов мне понадобился отдельный раздел памяти размером 512Мб.

Соответственно, для его размещения нужно где-то в памяти планшета найти эти мегабайты…
Читать дальше →

Работа с USB устройствами в программе на C в MacOS X

Reading time11 min
Views9.8K
Приветствую уважаемых читателей.
В этой небольшой статье я бы хотел рассмотреть вопрос взаимодействия с оборудованием (в данном случае с USB устройствами) в операционной системе MacOS X.
Будет рассмотрены очень интересный и полезный фреймворк IOKit, способ получения уведомлений о добавлении/удалении обордования, а так же получения полной информации об устройствах. Конечно данный материал не претендует на какую либо уникальность, т.к. каждый может разобраться с этими вопросами самостоятельно, изучив документацию Apple, а так же покурив разнообразные исходники на opensource.apple.com
Моя статья — попытка восполнить пробелл в русскоязычном материале подобного рода и описать некоторые грабли, с которыми могут столкнуться новичики.
Все кто заинтересовался — добро пожаловать под кат.
Читать дальше →

Мобильные устройства изнутри. Что такое GPT?

Reading time9 min
Views18K

Что такое GPT?



1. Введение


Продолжаем рассматривать строение программной части (software) мобильных устройств (МУ). Сегодня поговорим об устройстве GPT-раздела памяти. Написать об этом меня побудила публикация Изучаем структуры MBR и GPT, вместо того, чтобы писать комментарии к ней. Я хотел бы не поругать или поправить автора, а дополнить вышеуказанную публикацию с уклоном в МУ.


Итак, GPT (GUID Partition Table) это:

  • в первую очередь название схемы разметки памяти (GPT-схема) МУ ;
  • затем уж название раздела памяти (GPT-раздел), где расположена физически эта схема;
  • ну и также название файла-образа GPT-раздела памяти (GPT-файл).

Существует две схемы разметки памяти: MBR и GPT. Каждая схема содержится в отдельном разделе памяти, называемом, соответственно, MBR или GPT.

Как устроена MBR-схема разметки можно посмотреть в [1], а GPT это другой формат описания разметки памяти — GUID (GUID Partition Table). Он является частью EFI (Extensible Firmware Interface) — стандарта UEFI, используемого вместо BIOS для загрузки разделов памяти.

Переход на другой формат позволил устранить самый существенный недостаток MBR-формата — малое число разделов. Если в MBR помещалось только 4 записи с ограничением на длину раздела и его смещение из-за того, что эти параметры описывались 32-разрядными числами, то в GPT можно разместить 128 записей о разделах. Причем их параметры уже описываются в 64-разрядной системе счисления…
Читать дальше →

Эволюция системных вызовов архитектуры x86

Reading time13 min
Views46K

Про системные вызовы уже много было сказано, например здесь или здесь. Наверняка вам уже известно, что системный вызов — это способ вызова функции ядра ОС. Мне же захотелось копнуть глубже и узнать, что особенного в этом системном вызове, какие существуют реализации и какова их производительность на примере архитектуры x86-64. Если вам также интересны ответы на данные вопросы, добро пожаловать под кат.

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

MODx Revo workflow. Организация рабочего процесса, контроль версий и деплой

Reading time10 min
Views10K
Все основные элементы системы MODX, такие как чанки, шаблоны, сниппеты и т.д, хранятся в БД, из этого появляется проблема осуществления контроля версий за этими элементами, а также сложности с разделением на development и production версии сайта.

Приведу основные требования, чего я хочу от своего рабочего процесса на MODX Revo:
  • контроль версий везде, где пишу какой-либо код (html, css, js, php),
  • иметь отдельную dev-версию сайта, на которой ведётся текущая разработка, а после — деплоить все изменения в продакшн, причём, желательно, автоматизировать этот процесс,
  • минимум копипаста при разработке и деплое.

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

Расшифровка обновлений одного популярного сотового модема: метод Дмитрия Склярова

Reading time7 min
Views20K


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

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

Лабораторная работа: введение в Docker с нуля. Ваш первый микросервис

Reading time26 min
Views351K
Привет, хабрапользователь! Сегодня я попробую представить тебе очередную статью о докере. Зачем я это делаю, если таких статей уже множество? Ответов здесь несколько. Во-первых не все они описывают то, что мне самому бы очень пригодилось в самом начале моего пути изучения докера. Во-вторых хотелось бы дать людям к теории немного практики прямо по этой теории. Одна из немаловажных причин — уложить весь накопленный за этот недолгий период изучения докера опыт (я работаю с ним чуть более полугода) в какой-то сформированный формат, до конца разложив для себя все по-полочкам. Ну и в конце-концов излить душу, описывая некоторые грабли на которые я уже наступил (дать советы о них) и вилы, решение которых в докере просто не предусмотрено из коробки и о проблемах которых стоило бы задуматься на этапе когда вас распирает от острого желания перевести весь мир вокруг себя в контейнеры до осознавания что не для всех вещей эта технология годна.

Что мы будем рассматривать в данной статье?

В Части 0 (теоретической) я расскажу вам о контейнерах, что это и с чем едят
В Частях 1-5 будет теория и практическое задание, где мы напишем микросервис на python, работающий с очередью rabbitmq.
В Части 6 — послесловие
Читать дальше →

Язык Terra — низкоуровневый партнёр Lua

Reading time12 min
Views17K
Terra — низкоуровневый язык системного программмирования, встраиваемый и имеющий возможность метапрограммирования с помощью языка Lua.

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

Мобильные устройства изнутри. Структура образов разделов, содержащих файловую систему. Часть 2

Reading time19 min
Views8.5K

Структура образов разделов, содержащих файловую систему. Часть 2.


Начало публикации читайте в Часть 1.


3.2._sparsechunk-файлы


Т.к. sparse-файл, хоть и представляет собой сжатый исходный файл данных, тоже может иметь достаточно большой размер, то появилась его модификация, получившая название файлов типа _sparsechunk, которая представляет собой тот же sparse-файл, но разрезанный на части меньшего размера на основе заранее выбранной границы (по алгоритму разрезания файлов).

Это дополнение позволяет использовать сжатые sparse-файлы для передачи обновлений по ОТА или загрузке в режиме fastboot.
Читать дальше →

Изучаем структуры MBR и GPT

Reading time9 min
Views185K
Для работы с жестким диском его для начала необходимо как-то разметить, чтобы операционная система могла понять в какие области диска можно записывать информацию. Поскольку жесткие диски имеют большой объем, их пространство обычно разбивают на несколько частей — разделов диска. Каждому такому разделу может быть присвоена своя буква логического диска (для систем семейства Windows) и работать с ним можно, как будто это независимый диск в системе.

Способов разбиения дисков на разделы на сегодняшний день существует два. Первый способ — использовать MBR. Этот способ применялся еще чуть ли не с появления жестких дисков и работает с любыми операционными системами. Второй способ — использовать новую систему разметки — GPT. Этот способ поддерживается только современными операционными системами, поскольку он еще относительно молод.
Читать дальше →

Lua. Краткое введение в метатаблицы для чайников

Reading time14 min
Views71K

На написание данной статьи меня сподвигло большое количество вопросов по метатаблицам и ООП в Lua, благо это самый сложный и проблематичный раздел у изучающих данный язык, но, так как Lua проектировалась как язык для начинающих и не-программистов и, в целом, имеет небольшой объём материала для освоения, негоже оставлять её «на потом», учитывая что с помощью метатаблиц можно творить чудеса и крайне элегантные решения заковыристых задач.
Читать дальше →

Моделирование автопилота на авиасимуляторе

Reading time8 min
Views9.8K

Можно ли использовать продольно расположенный полупроводниковый гироскоп, который измеряет угловую скорость разворота самолета, для удержания крена? Проверим это на авиасимуляторе с внешним автопилотом. А также хотелось бы проверить алгоритмы управления самолетом. Такую возможность предоставляет авиасимулятор XPLANE.



Рис.1


Почему именно XPLANE? Он позволяет выводить данные с датчиков симулируемого самолета

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

Анализ защиты Sony PlayStation 4

Reading time25 min
Views104K
image

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

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

Если вы плохо знакомы с применением эксплойтов, вам cледует сначала прочитать мою прошлую статью про взлом игр DS с помощью уязвимости целостности стека (stack smash) в файлах сохранений.

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

Поиск ошибки в архитектуре процессора Xbox 360

Reading time6 min
Views27K
Вашему вниманию предлагается перевод свежей статьи Брюса Доусона – разработчика, сегодня работающего в Google над Chrome для Windows.

Недавнее открытие уязвимостей Meltdown и Spectre напомнило мне о том случае, как однажды я обнаружил подобную уязвимость в процессоре Xbox 360. Её причиной была недавно добавленная в процессор инструкция, само существование которой представляло собой опасность.

В 2005 году я занимался процессором Xbox 360. Я жил и дышал исключительно этим чипом. У меня на стене до сих пор висят полупроводниковая пластина процессора диаметром в 30 см и полутораметровый постер с архитектурой этого CPU. Я потратил так много времени на то, чтобы понять, как работают вычислительные конвейеры процессора, что, когда меня попросили выяснить причину загадочных падений, я смог интуитивно догадаться о том, что к их появлению могла привести ошибка в дизайне процессора.

Однако, прежде чем перейти к самой проблеме, сначала немного теории.
Читать дальше →

Вычисления на видеокарте, руководство, лёгкий уровень

Reading time3 min
Views36K
Это руководство поясняет работу простейшей программы, производящей вычисления на GPU. Вот ссылка на проект Юнити этой программы:

ссылка на файл проекта .unitypackage

Она рисует фрактал Мандельброта.

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

Шейдер, который рисует фрактал, написан на языке HLSL. Ниже приведён его текст. Я кратко прокомментировал значимые строки, а развёрнутые объяснения будут ниже.
Читать дальше →

Тахометр или спидометр: Поток мыслей про измерение частоты в Arduino

Reading time10 min
Views46K

Предистория


Если дома есть Arduino, в гараже машина или мотоцикл, а то и хоть мотособака, в голове туманные представления о программировании — возникает желание измерить скорость движения или обороты двигателя, посчитать пробег и моточасы.


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


Картинка для привлечения внимания

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

Мобильные устройства изнутри. Структура образов разделов, содержащих файловую систему. Часть 1

Reading time14 min
Views16K
Оглавление
Часть 1
1.Введение.
2.Разрезание на части (chunks).
3.Сжатие образов.
3.1.Sparse-файлы.

Часть 2
3.2._sparsechunk-файлы.
4.Создание dat-файлов.
5.Источники информации.

Структура образов разделов, содержащих файловую систему.


1.Введение


Образы разделов мобильных устройств (МУ), содержащих файловую систему (ФС) ext4, имеют большие размеры, например, размер образа раздела system может достигать нескольких ГБ, а размер образа раздела userdata составляет уже несколько десятков ГБ.

Эти особенности требуют от разработчика прошивок применения «хитростей» при выполнении операций первоначальной загрузки прошивок МУ или установки обновлений, т.к. размеры образов разделов становятся не только соизмеримыми с объемом оперативной памяти МУ, но и значительно их превышают.

Разработчики стоковых (заводских) прошивок для уменьшения размера образов разделов в настоящее время применяют следующие способы:

  • разделение (разрезание) образа на части (chunks);
  • сжатие образа целиком;
  • использование dat-файлов.

В основе первого способа лежит уменьшение размера образа за счет разделения его на несколько частей, называемых кусками (chunks), при этом размер каждого куска не должен превышать заранее выбранную допустимую величину. Это позволяет уменьшить размер порции информации, передаваемой в МУ за один сеанс.
Читать дальше →

Мобильные устройства изнутри. Разметка памяти, структура файлов описания и разметки памяти

Reading time19 min
Views39K

1. Введение


Как оказалось, разметка физической памяти мобильных устройств (МУ) это малоописанный раздел знаний, необходимых разработчику. Т.к. память существует во всех устройствах, созданных на основе микропроцессоров или микроконтроллеров, а их уже миллиарды, то это еще и очень-очень востребованный раздел знаний.

Эта статья посвящена аспектам разметки памяти только МУ, т.к. именно здесь существует тесно свитый разными производителями клубок из файлов описания разметки при почти полном отсутствии теоретических данных о структуре самих этих файлов.

Разметка физической памяти МУ формируется на основании таблиц или списков описаний параметров разделов памяти. Практически каждая фирма-производитель МУ имеет свою форму (структуру) этих таблиц. Тем не менее, все описания параметров разделов имеют много общего, что позволяет рассматривать их в едином контексте.

На основе таблиц описаний затем формируются файлы разметки памяти, которые в виде образов разделов прошиваются непосредственно в память МУ.
Читать дальше →

Объёмное атмосферное рассеяние света

Reading time31 min
Views30K
image

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

GIF

Статья разбита на следующие части:

  • Часть 1. Объёмное атмосферное рассеяние
  • Часть 2. Теория атмосферного рассеяния
  • Часть 3. Математика рэлеевского рассеяния
  • Часть 4. Путешествие сквозь атмосферу
  • Часть 5. Атмосферный шейдер
  • Часть 6. Пересечение атмосферы
  • Часть 7. Шейдер атмосферного рассеяния
Читать дальше →

Information

Rating
6,853-rd
Date of birth
Registered
Activity