Pull to refresh
1
0
Send message

Алгоритм Ляна-Кнута для расстановки мягких переносов

Reading time4 min
Views13K
При работе с текстом часто возникает потребность корректно расставить переносы. Задача на первый взгляд не такая уж очевидная, нужно учитывать особенности каждого языка, чтобы решить, в каком месте разорвать слово. Как правильно формализовать такие требования, и как потом применить их в алгоритме? Одно из самых распространенных на сей день решений предложил Франклин Марк Лян, студент известного профессора Дональда Кнута. Алгоритм так и называется – «Алгоритм Ляна-Кнута», он применяется в издательской системе TeX, автор которой опять же Д. Кнут.

Алгоритм основан на сравнении исходного слова с набором правил (шаблонов). Чем больше правил и чем качественнее они составлены, тем лучше будут расставляться переносы. В пакете TeX можно найти готовые бесплатные наборы правил для многих языков, нужно только внимательно смотреть на условия использования и распространения.
Узнать больше
Total votes 54: ↑51 and ↓3+48
Comments15

Простейший алгоритм разделения слова на слоги

Reading time3 min
Views6.3K
Однажды на проводимом мной практическом занятии [по ЯП] я, скучая, разглядывал список студентов группы. Глаз зацепился за знак ударения в фамилии Лемзекóв, который я поставил [для себя] после того, как произнёс фамилию этого студента неправильно. Я мысленно прочёл эту фамилию по слогам, и тут у меня возник вопрос: «а по какому алгоритму мозг разбивает слова по слогам?» Почему-то интуитивно получается "Лем-зе-ков", а не "Ле-мзе-ков" или "Лем-зек-ов". Я выписал ещё несколько примеров, и разглядывая их размышлял о том, как перевести это в алгоритм.
Читать дальше →
Total votes 17: ↑16 and ↓1+17
Comments28

Что делать с детьми летом, если ты айтишник. Часть 2

Level of difficultyEasy
Reading time4 min
Views30K

Дети растут, их потребности меняются, а проверенные рецепты семейного счастья перестают действовать. Особенно изобретательным приходится быть в праздники и в летнее время. Как организовать совместный досуг, чтобы всем было интересно? Ранее я уже писал, как играть с ребёнком в шифры , а также давал подборку развивающих настолок. В честь Дня защиты детей решил продолжить эту славную традицию.

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

Читать далее
Total votes 43: ↑40 and ↓3+46
Comments27

Аппаратные атаки на микроконтроллеры с использованием ChipWhisperer и методы защиты от них

Reading time11 min
Views26K

Аппаратные атаки представляют большую угрозу для всех устройств с микроконтроллерами (далее – МК), поскольку с их помощью можно обойти разные механизмы безопасности. От таких атак тяжело защититься программными или аппаратными средствами. Для примера можно прочитать статью от STMicroelectronics про различные виды аппаратных атак и методы защиты МК.
Мы – команда Raccoon Security – заинтересовались этой темой, поскольку одним из направлений деятельности нашей компании является разработка embedded-устройств, в том числе содержащих механизмы защиты информации. По большей части нас интересуют glitch-атаки, поскольку они позволяют проскользнуть мимо исполняемых инструкций МК. Это серьезная угроза для конфиденциальной информации, содержащейся в МК, и самое опасное последствие таких атак – считывание закрытой прошивки в обход механизмов безопасности, предусмотренных разработчиками МК.


На конференциях Hardwear.io 2018 в Гааге и EmbeddedWorld 2019 в Нюрнберге компания NewAE демонстрировала устройство ChipWhisperer, позволяющее реализовать ту часть неинвазивных аппаратных атак, которые не требуют глубинных знаний наноэлектроники и наличия специфического оборудования. При помощи этого устройства мы изучили безопасность embedded-устройств и поняли, как минимизировать результат подобных атак. Под катом – что у нас получилось.

Читать дальше →
Total votes 21: ↑20 and ↓1+27
Comments26

Вычитываем прошивку STM32

Reading time7 min
Views44K

Почти в каждом микроконтроллере с интегрированной флэш памятью есть защита от вычитывания прошивки. Это делается чтобы защитить интеллектуальную собственность, криптографические ключи и алгоритмы от злоумышленников. Микроконтроллеры серии STM32, получившие широкое распространение в последнее время, особенно часто подвергаются атакам, однако нет практического опыта или информации касательно защищенности STM32 от подобных атак доступной публично. В этой статье рассмотрим системы защиты прошивки на примере STM32f0 серии и способы их взлома.

Flash Readout Protection (RDP) ключевой компонент в защите, включенный во все линейки микроконтроллеров. Он защищает системную прошивку, сохраненную во внутренней флэш памяти от вычитывания. В зависимости от линейки, могут быть включены дополнительные механизмы, такие как Memory Protection Unit (MPU) и привилегированные / непривилегированные режимы исполнения. Вместе, эти системы призваны повысить защищенность.

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

Узнать подробнее
Total votes 52: ↑52 and ↓0+52
Comments28

Книга «Рекурсивная книга о рекурсии»

Reading time10 min
Views7.8K
imageПривет, Хаброжители!

Книга «Рекурсивная книга о рекурсии» содержит примеры кода на языке Python и JavaScript, которые иллюстрируют основы рекурсии и проясняют фундаментальные принципы всех рекурсивных алгоритмов. Из книги вы узнаете о том, когда стоит использовать рекурсивные функции (и, главное, когда этого не нужно делать), как реализовывать классические рекурсивные алгоритмы, часто обсуждаемые на собеседованиях, а также о том, как рекурсивные методы помогают решать задачи, связанные с обходом дерева, комбинаторикой и другими сложными темами.

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

Единственным минимальным условием для изучения книги является наличие базового опыта программирования на языке Python или JavaScript, на которых написан код в листингах. Код в книге сведен к самой сути: если вы умеете вызывать и создавать функции, а также различать глобальные и локальные переменные — вы знаете достаточно, чтобы разобраться в этих примерах.
Читать дальше →
Total votes 8: ↑7 and ↓1+10
Comments4

Как быстро вычисляются логарифм и экспонента в компьютере?

Reading time7 min
Views6.3K

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

Читать далее
Total votes 12: ↑11 and ↓1+17
Comments4

Может ли биолог починить радио? 20 лет спустя

Level of difficultyMedium
Reading time9 min
Views8.6K

В 2002 в журнале Cancer Cell вышла весьма саркастическая статья Юрия Лазебника «Может ли биолог починить радиоприемник, или что я понял, изучая апоптоз».

За 20 лет много изменилось. Биологи создали графический язык SBGN (Systems Biology Graphical Notation) для представления структуры биохимических путей и XML формат SBML (Systems Biology Markup Language) для представления математических моделей.

Кроме самих стандартов, необходимо программное обеспечение, которое их поддерживает. Начиная с 2001 года наша команда разрабатывает программный комплекс BioUML для моделирования сложных биологических систем и анализа биомедицинских данных. UML в его названии – это отсылка к стандарту UML – Unified Modeling Language, языку графического описания для объектного моделирования в области разработки программного обеспечения. Используя ПК BioUML, нашей группой были построены сложные компьютерные модели биологических систем (насколько я знаю, некоторые из них — наиболее сложные в мире для соответствующих систем).

Таким образом, современные стандарты SBGN и SBML и ПК BioUML позволяют биологам создавать схемы и модели биологических систем, вполне сопоставимые по уровню формализации с инженерными схемами.

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

Разные идеи по апгрейду DIY-процесса изготовления печатных плат

Level of difficultyMedium
Reading time8 min
Views16K

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

Конечно, зачастую вопрос решается пучком проводов, подключённых «левой ногой» и breadboard-ом, но раз уж мы говорим о более-менее финальном варианте, то здесь без самодельной платы не обойтись.
Читать дальше →
Total votes 45: ↑42 and ↓3+62
Comments129

Изучаем ёмкостную трёхточку и собираем FM передатчик

Level of difficultyMedium
Reading time11 min
Views16K


Сегодняшний опыт позволит нам увидеть на экране осциллографа, какие параметры цепи влияют на работу LC-генератора Колпитца, и откуда берутся искажения формы волны.

После чего соберём маленький транзисторный УКВ ЧМ передатчик на базе такого генератора. Не пугайтесь, он совсем маломощный (как MP3-модуляторы в гнезде автомобильного прикуривателя) и не нарушает законов о радиосвязи.

А чтобы услышать, что передатчик вещает, соберем ещё и FM радиоприёмник.
Будет интересно!
Total votes 30: ↑30 and ↓0+30
Comments5

Клеточные автоматы. Игра «Жизнь». Часть 1

Level of difficultyEasy
Reading time10 min
Views11K

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

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

В статье мы покажем, как создать красивую симуляцию 'Жизни' на Python. Приготовьтесь к интересному исследованию!

Читать далее
Total votes 17: ↑15 and ↓2+16
Comments11

SportIduino — система электронной отметки на Arduino для спортивного ориентирования

Reading time5 min
Views22K


Выбраться на природу всегда замечательно, но с картой в руках и с осознанной целью всегда интересней. Существуют такие виды активного отдыха, как ориентирование, рогейны, мультигонки, участвуя в которых можно хорошо провести время. Задача ориентировщика заключается в том, чтобы за минимальное время посетить обозначенные на карте контрольные пункты (КП). Для того, чтобы доказать факт их посещения, используются как т.н. «традиционные» системы отметки: цветные карандаши, кодовые символы, компостеры и т.д., так и электронные системы. Несмотря на удобство последних, в любительских соревнованиях по-прежнему широко используются традиционные способы. Связано это со стоимостью оборудования (от 3500 рублей за станцию отметки и от 450 рублей за один чип), с возможностью кражи станций, установленных в общедоступных местах, необходимостью брать залог за чип. Поэтому я поставил себе цель создать более доступную альтернативу. Ниже описана её реализация в среде Arduino.
Читать дальше →
Total votes 24: ↑23 and ↓1+22
Comments58

Считывание защищенной прошивки из флеш-памяти STM32F1xx с использованием ChipWhisperer

Reading time9 min
Views51K

В предыдущей статье мы разбирались с Vcc-glitch-атаками при помощи ChipWhisperer. Нашей дальнейшей целью стало поэтапное изучение процесса считывания защищенной прошивки микроконтроллеров. С помощью подобных атак злоумышленник может получить доступ ко всем паролям устройства и программным алгоритмам. Яркий пример – взлом аппаратного криптокошелька Ledger Nano S с платой МК STM32F042 при помощи Vcc-glitch-атак.


Интересно? Давайте смотреть под кат.

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

«Карманный синоптик за час». Пишем Telegram-бота для мониторинга погоды на Python

Level of difficultyMedium
Reading time6 min
Views31K

Хабровчане, всем привет! Меня зовут Максим Плачковский, я автор канала PythonToday. Из этой статьи вы узнаете, как написать своего Telegram-бота для получения данных о погоде в любом городе нашей планеты. Мы детально рассмотрим работу с API, парсинг JSON и напишем бота на асинхронной библиотеке aiogram. А после — загрузим его на виртуальный сервер и запустим. Если интересно, добро пожаловать под кат!
Читать дальше →
Total votes 48: ↑38 and ↓10+41
Comments16

Крошечная копия iPhone 6 за 150 рублей — можно ли пользоваться смартфоном на Android, размером с ладошку?

Level of difficultyEasy
Reading time7 min
Views16K
image

В наше время, немногие производители смартфонов решаются кардинально экспериментировать с форм-фактором устройств: на слух приходит лишь Xiaomi с кнопочными смартфонами Qin, UniHertz со своим QWERTY-смартфоном Titan и некая компания Soyes из Китая, модельный ряд которой состоит исключительно из смартфонов с диагональю дисплея 3" и менее. Устройства этой компании отличаются не только миниатюрными размерами и полноценными возможностями смартфона за 50$, но и тем, что визуально копируют флагманские модели iPhone и Samsung! Я довольно давно слышал о «сойесах», но обзавестись им получилось только сейчас: причём всего за 150 рублей, вместе с родной коробочкой и скрытым дефектом тачскрина! Сегодня мы с вами: посмотрим на мини-смартфоны и попытаемся понять причину их популярности, отремонтируем девайс подручными средствами и посмотрим, на что же способен такая кроха в 2023 году!
Читать дальше →
Total votes 33: ↑28 and ↓5+34
Comments87

WALL-E на базе Arduino UNO c управлением по Bluetooth

Reading time2 min
Views17K
После очередного просмотра мультфильма WALL-E пришла идея собрать для сына такого робота. Конечно же такой робот продаётся, скажете Вы и называется «WALL-E U-Command Remote Control», но стоит он не мало. Не хотел покупать очередную игрушку, хотел совместно с сыном собрать что-то своё, со своими элементами и функциями. Что у нас получилось, смотрите ниже.


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

Получаем сертификат ЦРУ перебирая архивы

Level of difficultyEasy
Reading time10 min
Views5.3K

Когда-то давно передо мной стояла задача по поиску файлов на ресурсах, которые могли уже не работать или определённые данные с них были удалены. Тогда для этой цели я использовал веб архивы Common Crawl и самопальный инструмент для автоматизации взаимодействия с ним.

Сейчас мне понадобилось решить схожую задачу, но Common Crawl упал и пока не встаёт… Поэтому было принято решение допилить свой инструмент до уровня скоростного велосипеда с использованием Wayback Machine и поделиться небольшим опытом извлечения архивных данных.

Не погружаясь сильно в детали, далее, в общих чертах я опишу что используют сервисы для архивации, как мы можем этим пользоваться через API, а в конце мы сертифицируемся по-ЦРУшному используя инструмент GoGetCrawl.

Хочу сертификат
Total votes 7: ↑6 and ↓1+9
Comments5

Делаем ST-Link V2.1 из китайского ST-Link V2

Reading time3 min
Views162K
Привет, Хабр!

В данной статье расскажу как модифицировать ST-Link V2 до ST-Link V2.1.

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

Кому интересно — прошу под кат.
Читать дальше →
Total votes 36: ↑36 and ↓0+36
Comments103

Астрономический словарик: шкала космических расстояний, щели Кирквуда, эксцентриситет орбиты

Level of difficultyMedium
Reading time8 min
Views3.3K

Шкала космических расстояний



Иерархия методов определения расстояний во Вселенной (красный цвет – прямые методы, черный – промежуточные, синий – косвенные).

Шкала, или лестница космических расстояний — это последовательность методов, с помощью которых астрономы определяют расстояния до небесных объектов. Прямое измерение расстояния до астрономического объекта возможно только для тех объектов, которые находятся «достаточно близко» (в пределах тысячи парсек) к Земле. Все методы определения расстояний до более удалённых объектов основаны на различных измеренных корреляциях между методами, которые работают на близких расстояниях, и методами, которые работают на больших расстояниях. Некоторые методы основаны на стандартных свечах — астрономических объектах с известной светимостью.

Аналогия с лестницей возникает потому, что ни один метод не может измерить расстояния на всех расстояниях, встречающихся в астрономии. Вместо этого один метод может быть использован для измерения близких расстояний, второй — для измерения близких и промежуточных расстояний и так далее. Каждая ступенька лестницы предоставляет информацию, которая может быть использована для определения расстояний на следующей, более высокой ступеньке.
Читать дальше →
Total votes 16: ↑15 and ↓1+26
Comments3

4G-камера с детекцией человека

Reading time2 min
Views6.1K
Эта камера не требует Wi-Fi или кабельного интернета: в неё вставляется симкарта.

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

Total votes 7: ↑6 and ↓1+8
Comments18

Information

Rating
Does not participate
Registered
Activity

Specialization

Embedded Software Engineer
Senior