Pull to refresh
3
0
Dmitri Sinitsa @unabl4

веб-разработчик

Send message

Корректирующие коды «на пальцах»

Reading time11 min
Views72K

Корректирующие (или помехоустойчивые) коды — это коды, которые могут обнаружить и, если повезёт, исправить ошибки, возникшие при передаче данных. Даже если вы ничего не слышали о них, то наверняка встречали аббревиатуру CRC в списке файлов в ZIP-архиве или даже надпись ECC на планке памяти. А кто-то, может быть, задумывался, как так получается, что если поцарапать DVD-диск, то данные всё равно считываются без ошибок. Конечно, если царапина не в сантиметр толщиной и не разрезала диск пополам.


Как нетрудно догадаться, ко всему этому причастны корректирующие коды. Собственно, ECC так и расшифровывается — «error-correcting code», то есть «код, исправляющий ошибки». А CRC — это один из алгоритмов, обнаруживающих ошибки в данных. Исправить он их не может, но часто это и не требуется.


Давайте же разберёмся, что это такое.


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


Внимание! Много текста и мало картинок. Я постарался всё объяснить, но без карандаша и бумаги текст может показаться немного запутанным.

Читать дальше →
Total votes 56: ↑55 and ↓1+54
Comments21

Миграции данных в Ruby On Rails

Reading time13 min
Views5.9K

img


TL;DR Пожалуйста, выносите код миграции данных в Rake-задачи или пользуйтесь полноценными гемами в стиле миграций схемы. Покрывайте тестами эту логику.

Читать дальше →
Total votes 8: ↑7 and ↓1+10
Comments15

Трюки с SQL от DBA. Небанальные советы для разработчиков БД

Reading time22 min
Views32K

Когда я начинал свою карьеру разработчика, моей первой работой стала DBA (администратор базы данных, АБД). В те годы, ещё до AWS RDS, Azure, Google Cloud и других облачных сервисов, существовало два типа АБД:

  • АБД инфраструктуры отвечали за настройку базы данных, конфигурирование хранилища и заботу о резервных копиях и репликации. После настройки БД инфраструктурный администратор время от времени «настраивал экземпляры», например, уточнял размеры кэшей.
  • АБД приложения получал от АБД инфраструктуры чистую базу и отвечал за её архитектуру: создание таблиц, индексов, ограничений и настройку SQL. АБД приложения также реализовывал ETL-процессы и миграцию данных. Если команды использовали хранимые процедуры, то АБД приложения поддерживал и их.

АБД приложений обычно были частью команд разработки. Они обладали глубокими познаниями по конкретной теме, поэтому обычно работали только над одним-двумя проектами. Инфраструктурные администраторы баз данных обычно входили в ИТ-команду и могли одновременно работать над несколькими проектами.
Читать дальше →
Total votes 52: ↑48 and ↓4+68
Comments38

Как расшифровать прошивку автомобиля в неизвестном формате

Reading time8 min
Views25K

Toyota распространяет свои прошивки в недокументированном формате. Мой заказчик, у которого автомобиль этой марки, показал мне файл прошивки, который начинается так:

CALIBRATIONêXi º
attach.att
ÓÏ[Format]
Version=4

[Vehicle]
Number=0
DateOfIssue=2019-08-26
VehicleType=GUN1**
EngineType=1GD-FTV,2GD-FTV
VehicleName=IMV
ModelYear=15-
ContactType=CAN
KindOfECU=0
NumberOfCalibration=1

[CPU01]
CPUImageName=3F0S7300.xxz
FlashCodeName=
NewCID=3F0S7300
LocationID=0002000100070720
CPUType=87
NumberOfTargets=3
01_TargetCalibration=3F0S7200
01_TargetData=3531464734383B3A
02_TargetCalibration=3F0S7100
02_TargetData=3747354537494A39
03_TargetCalibration=3F0S7000
03_TargetData=3732463737463B4A

3F0S7300forIMV.txt ¸Ni¶m5A56001000820EE13FE2030133E20301
33E2030133C20EF13FE2030133E20301
33E2030133E2030133E2030133E20301
33E2030133C20EF13FE2030133E20301
33E2030133C20EF13FE2030133E20301
33E2030133C20EF13FE2030133E20301
33E2030133E2030133E2030133E20301
33E2030133C20EF13FE2030133E20301
33E2030133E20911381959FAB0EE9000
81C9E03ADE35CEEEEFC5CF8DE9AC0910
38C2E031DE35CEEEEFC8CF87E95C0920
...

Дальше идут строки по 32 шестнадцатеричные цифры.

Хозяину и прочим умельцам хотелось бы перед установкой прошивки иметь возможность проверить, что там внутри: засунуть ее в дизассемблер и посмотреть, что она делает.
Читать дальше →
Total votes 44: ↑42 and ↓2+60
Comments33

Магистратура в области Computer Science в Эстонии: личный опыт

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

Два года назад я переехала из Санкт-Петербурга в город Тарту, в Эстонию, чтобы учиться в магистратуре по специальности Computer Science. Перед переездом я провела много времени в поисках статей, где бы такие же студенты, как я, описывали свой личный опыт учебы в Эстонии в качестве иностранного студента, но мои поиски были практически безрезультатны. Прошло 2 года, я закончила магистратуру, и теперь хочу поделиться своим опытом поступления и учебы в Тартуском университете, и, надеюсь, помочь тем, кому сейчас не хватает такой информации, как мне когда-то.



1. Обо мне


В 2017 году я закончила бакалавриат СПбГУ по направлению “Прикладная математика, физика и процессы управления”. Занималась гидродинамикой, но к концу бакалавриата пришло осознание, что хочется попробовать себя в IT сфере. Я решила, что буду поступать в магистратуру на специальность, связанную с программированием. Это осознание мне пришло довольно поздно, и я не очень основательно подошла к выбору университета и программы. Из Питера мне переезжать на тот момент не хотелось, поэтому я поступила в магистратуру в ИТМО на специальность “Программное обеспечение в инфокоммуникациях”. Но уже летом перед магистратурой я начала понимать, что это не совсем то, что мне нужно. Я походила на пары до октября и решила, что заберу документы и возьму gap year. С этого начался мой путь к магистратуре за границей.

Читать дальше →
Total votes 21: ↑19 and ↓2+20
Comments61

История Airbnb: Какие уроки можно из нее извлечь?

Reading time7 min
Views11K

«Дураки учатся на своих ошибках, а умные — на чужих»
Теодор Рузвельт, 26-й президент США

Теодор Рузвельт, к сожалению, не был знаком с подходом MVP (Minimum Viable Product), и в соответствии с этим высказыванием все основатели стартапов немного «дураки» в хорошем смысле этого слова — порой, начиная с безумной идеи, путем проб и ошибок они тестируют свои гипотезы и в конце концов находят соответствие продукта рынку (product market fit).

Тем не менее, чужой опыт и менторство безусловно важны, и в этой статье я хочу рассказать, чему мы можем научиться на истории Airbnb.

Cпойлер
Если вы никогда не пользовались платформой Airbnb — это площадка для поиска краткосрочной аренды жилья по всему миру.

Читать дальше →
Total votes 10: ↑9 and ↓1+10
Comments1

Интервью с DHH: обсудили проблемы с App Store и разработку нового почтового сервиса Hey

Reading time9 min
Views2.2K
Пообщался с техническим директором Hey — Дэвидом Хэнссоном. Российской аудитории он известен как разработчик Ruby on Rails и сооснователь Basecamp. Поговорили о блокировке обновлений Hey в App Store (о ситуации), ходе разработки сервиса и приватности данных.

Total votes 7: ↑7 and ↓0+7
Comments0

Самый ужасный день в компании Slack

Reading time6 min
Views19K


Эта статья описывает технические детали проблем, из-за которых Slack упал 12 мая 2020 года. Больше о процессе реагирования на тот инцидент см. хронологию Райана Каткова «Обе руки на пульте».

12 мая 2020 года у Slack произошел первый значительный сбой за долгое время. Вскоре мы опубликовали краткое изложение инцидента, но это довольно интересная история, поэтому хотели бы подробнее остановиться на технических деталях.
Читать дальше →
Total votes 20: ↑11 and ↓9+5
Comments15

Сам себе работодатель: отмечаем День фрилансера

Reading time4 min
Views1.9K
14 мая в России отмечается день фрилансера. С недавнего времени для работающих на себя профессионалов даже есть особый статус — самозанятого. Он позволяет легализовать подработку или работу на себя. Сейчас, когда бизнес находится в ситуации неопределенности, самое время оценить свои таланты и возможности и подумать о дополнительном заработке. Рассказываем, кому и зачем нужен статус самозанятого.


Источник: Ридус, авторская колонка эксперта «Яндекс.Кассы»
Читать дальше →
Total votes 5: ↑5 and ↓0+5
Comments3

Spring MVC: создание веб-сайтов и RESTful сервисов

Reading time34 min
Views135K

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


Примечание: Статья ~ 7500 слов, вероятно, не стоит читать ее на мобильном устройстве. Добавьте ее в закладки и вернитесь позже.


Содержание


Читать дальше →
Total votes 9: ↑7 and ↓2+9
Comments4

Расшифровка данных в CAN шине VW Polo sedan

Reading time9 min
Views44K
Сегодня мы поговорим о методах расшифровки данных CAN шины на примере автомобиля VW Polo Sedan 2019 года выпуска. В интернете такие статьи часто называют Хаками CAN шины, но мне такое название не по душе.

В статье описаны методики поиска нужных данных в CAN шине автомобиля, примеры применения этих методик на VW Polo Sedan. В качестве оборудования для подключения к CAN шине используется Vega MTX. Еще чуть-чуть поговорим о телематике. Под катом много картинок по теме, несколько gif и видео.
Total votes 23: ↑21 and ↓2+26
Comments33

SameSite=Lax по умолчанию — уже в Chrome 80 stable (правда, пока не у всех)

Reading time4 min
Views56K
На днях внимательная коллега (спасибо, Лена) зарепортила странный баг — сервер нормально ставил куку в браузере, но обратно она не прилетала. Днём ранее всё работало, теперь же кука выставлялась, но спустя несколько секунд магическим образом пропадала (хотя должна держаться сутки). Воспроизводилось это всего у нескольких человек в команде и только в новом Chrome 80, но у остальных в Chrome точно такой же версии всё было в порядке. В других браузерах всё работало как часы. Мистика. Начали разбираться, и спустя какое-то время в консоли Chrome заметили предупреждение для заголовка ответа, устанавливающего куки:
A cookie associated with a cross-site resource at _your_domain_ was set without the `SameSite` attribute. A future release of Chrome will only deliver cookies with cross-site requests if they are set with `SameSite=None` and `Secure`.

Начали изучать что это такое, и постепенно стало понятно, как ошибка возникла и почему проявлялась не у всех. Поскольку наш сервис должен обрабатывать запросы с разных доменов, то SameSite — как раз наш случай. Добавили SameSite=None; Secure, и проблема для нас решилась.

Почему так?

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

Infineon внедрила перекрёстную подпись сертификатов в своих криптографических микросхемах

Reading time3 min
Views4.8K

Умный завод четвёртого поколения (Industry 4.0) работает автономно. Роботы на конвейере общаются друг с другом, уменьшая процент брака и отходов

Один из крупнейших в мире производителей микросхем Infineon заключил соглашение с глобальным центром сертификации GlobalSign на перекрёстную подпись сертификатов, которые производитель самостоятельно выдаёт для своих промышленных криптографических чипов Optiga TPM SLM 9670. Теперь эти подписи проверяемы по цепочке вплоть до корневого центра сертификации GlobalSign, что значительно упрощает управление ими.
Читать дальше →
Total votes 11: ↑11 and ↓0+11
Comments6

Как работает парктроник и как его обмануть

Reading time3 min
Views48K
imageВ один прекрасный день… Зачем я вру? Не настолько прекрасен был день, когда у меня сдох отечественно-китайский парктроник, установленный еще прежним владельцем. Надо что-то делать, но что? Купить на любой онлайн площадке очередное готовое изделие? Неинтересно. В сети, да и на хабре, есть достаточное количество материалов о реверсе протокола общения блока с индикатором или о создании своего парктроника на Arduino. И можно пойти по одному из этих путей. Но это все не то, чего желала душа. А желала она чего-то более штатного, приближенного по исполнению к автомобильной электронике.
Читать дальше →
Total votes 54: ↑45 and ↓9+57
Comments84

Краткие заметки embed-программиста: дублирование секции в памяти микроконтроллера

Reading time9 min
Views6.3K

Начальные условия


Есть устройство на базе микроконтроллера (для примера будет взят stm32f405rgt6). При включении оно настраивает свою периферию на основе предпочтений пользователя или настроек по-умолчанию. Пользователь может менять настройки во время работы устройства (как правило, только во время интеграции в комплекс) через один из возможных интерфейсов (CLI меню или утилита установки параметров работы, работающая через бинарный протокол). После установки параметров пользователь сохраняет настройки специальной командой (так же через один из возможных интерфейсов).
Читать дальше →
Total votes 9: ↑7 and ↓2+10
Comments50

Реализация FizzBuzz на FPGA

Reading time13 min
Views16K
Недавно я увлёкся программированием FPGA и решил, что будет интересно реализовать на FPGA алгоритм игры FizzBuzz. FPGA (программируемая пользователем вентильная матрица) — интересная микросхема. Она программируется на выполнение произвольной цифровой логики. Можно сконструировать сложную схему, не прокладывая физические каналы между отдельными вентилями и триггерами. Микросхема способна превратиться во что угодно, от логического анализатора до микропроцессора и видеогенератора.

Тест FizzBuzz — написать программку, которая выдаёт числа от 1 до 100, где кратные трём заменяются словом “Fizz”, кратные пяти — словом “Buzz”, а кратные пятнадцати — “FizzBuzz”. Поскольку такая программа реализуется в нескольких строчках кода, то её часто задают на собеседованиях чтобы отсеять тех, кто вообще не умеет программировать.


Плата Mojo FPGA, подключенная к порту serial-to-USB. Большой чип на плате — это Spartan 6 FPGA

Реализация FizzBuzz в цифровой логике, а не в коде, довольно бессмысленна, но показалась мне хорошим примером для обучения.1 Для этого проекта я использовал простую плату разработки Mojo V3 FPGA для начинающих. На ней установлен FPGA семейства Xilinx Spartan 6. Это один из самых маленьких FPGA, но у него 9000 логических ячеек и 11 000 триггеров — так что малыш на многое способен.
Читать дальше →
Total votes 45: ↑45 and ↓0+45
Comments11

Реверс USB-SATA-адаптера (история одного стажера)

Reading time16 min
Views28K

Предыстория


Стажировка – это процесс получения знаний и опыта. Наша команда Raccoon Security считает, что повышение уровня информационной безопасности окружающих нас устройств и ПО невозможно без передачи этих знаний и опыта будущим поколениям специалистов. Именно поэтому мы уже много лет организуем индивидуальные стажировки для талантливых студентов и выпускников.


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


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

Чтобы пацанам было не стыдно показать

Reading time3 min
Views106K
Я стар и уже глуп, а у вас всё впереди, уважаемый программист. Но позвольте дать вам один совет, который наверняка поможет в вашей карьере – если, конечно, вы планируете остаться программистом.

Советы типа «писать красивый код», «хорошо комментировать свои доработки», «изучать современные фреймворки» — очень полезные, но, увы, второстепенные. Они идут прицепом к главному качеству программиста, которое надо в себе развивать.

Вот это главное качество: пытливый ум.
Читать дальше →
Total votes 251: ↑227 and ↓24+267
Comments172

Конференция DEFCON 27. Взламываем полицию. Часть 2

Reading time10 min
Views5.1K
Конференция DEFCON 27. Взламываем полицию. Часть 1

Поднимите руки, если знаете, к чему это может привести! ОК, все это интересно, но если внимательней рассмотреть пример с 65 милями в час, можно обнаружить небольшую проблему. Мой прибор постоянно передает эту скорость, так как работает на определенной фиксированной частоте, но как быть, если я проезжаю мимо школы, где действует ограничение скоростного режима? К тому же мы никогда точно не знаем, на какой частоте полицейский радар передает сигнал.



Однако, друзья, должен сказать, что мы живем в интересные времена. Мы живем в будущем, когда вся мировая информация находится в наших руках, и мы можем делать с ней все, что захотим. Новые автомобильные радар-детекторы, в частности Valentine One и Escort 360, обнаруживают сигналы радара, расположенного примерно в 2-3 милях впереди вашего авто и с помощью Bluetooth выводят на экран информацию, на какой частоте полицейский радар излучает эти сигналы (аплодисменты).
Total votes 12: ↑10 and ↓2+12
Comments19

Пишем драйвер для ноутбука for fun and profit, или как закоммитить в ядро даже если ты дурак

Reading time5 min
Views37K

С чего всё началось


Начнём с постановки проблемы. Дано: один ноутбук. Новый ноутбук, геймерский. С RGB-подсветкой. Вот такой примерно ноутбук:

image
Картинка взята с lenovo.com

Есть ещё программа к этому ноутбуку. Программа как раз этой подсветкой и управляет.

Одна только проблема – программа под Windows, а хочется чтоб в любимом линуксе всё работало. И лампочки чтоб светились, и чтоб цвета красивые мелькали. Да вот только как это сделать, чтоб без реверс-инжиниринга и без написания своих драйверов? Простой ответ пришёл быстро – никак. Ну что ж, пошли писать драйвер.
Читать дальше →
Total votes 103: ↑102 and ↓1+131
Comments20

Information

Rating
Does not participate
Location
Таллин, Эстония, Эстония
Date of birth
Registered
Activity