Search
Write a publication
Pull to refresh
14
0
Дмитрий Земсков @SADKO

Overqualified

Send message

Погодный информер на цветном e-paper дисплее

Reading time9 min
Views9.8K

Года три назад я купил на Ali цветной e- paper дисплей «Waveshare 4.2 inch e-paper module», руководствуясь в основном желанием попробовать новую технологию своими руками.Дисплей может отображать 3 цвета (белый, черный, красный) с разрешением 400 на 300 точек. Интерфейс подключения – SPI. Всего требуется подключить пять информационных сигналов: DIN, CLK, CS, BUSY, RESET.Плюс естественно GND и питание.

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

Основное достоинство такого дисплея в том, что энергия для его работы требуется только на этапе вывода новой информации. В статике энергия не требуется совсем.
Поэтому такой дисплей идеален в системах с автономным питанием с нечастым обновлением данных.

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

Конечно я знаю, что можно ровно то же самое посмотреть на экране смартфона :))

Дисплей был куплен, присоединен к ESP8266 и опробован в работе с помощью программы Loader.ino, которую предлагает Waveshare. При запуске esp8266 создает сайт, зайдя на который можно вывести изображение на дисплей.

Оказалось, что картинки выводятся весьма убого… Т.е. дисплей пригоден для вывода текстовой информации, но и не более того.

Читать далее

Как воссоздать изображение всего по нескольким пикселям

Reading time7 min
Views21K
Эта статья дает возможность познакомиться с такой методикой получения и восстановления сигнала, как Compressive Sensing.

image
Множество всех возможных изображений 2 на 2 с цветами, закодированными одним битом

Пространство изображений огромно, невероятно огромно, но при этом очень мало. Задумайтесь об этом на минуту. Из сетки размером всего 8 на 8 пикселей можно создать 18 446 744 073 709 551 616 различных чёрно-белых изображений. Однако из этих 18 квинтиллионов изображений очень немногие покажутся осмысленными человеческому взгляду. Большинство изображений, по сути, выглядит как QR-коды. Те, которые покажутся человеку осмысленными, принадлежат к тому множеству, которое я называю естественными изображениями. Они представляют крошечную долю пространства изображений 8 на 8. Если мы рассмотрим мегапиксельные изображения, то доля естественных изображений становится ещё меньше, почти ничтожной, однако содержит любое изображение, которое можно придумать. Так чем же эти естественные изображения так уникальны? И можем ли мы использовать эту фундаментальную разницу в собственных интересах?
Читать дальше →

Нейробиология и карьера в науке

Reading time26 min
Views11K

На этой неделе в наших соцсетях выступала Виктория Коржова, PhD in нейробиологии в Ludwig Maximilian University of Munich.

Сейчас Вика работает Product Manager в бутик-консалтинговой компании Product People и консультирую студентов и молодых ученых по вопросам научной карьеры и ведет телеграм-канал об этом.

Вика рассказада о своей работе над изучением синдрома Альцгеймера и научной карьере в целом.

DIY наушники. Как, а главное, зачем

Reading time14 min
Views56K

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

Читать далее

Как root-права и альтернативные прошивки делают ваш android смартфон уязвимым

Reading time54 min
Views140K

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

Часто для этого рекомендуется получение прав суперпользователя в системе (root-права), удаление системных приложений от Google и от производителя устройства, или даже полная замена стандартной ОС на альтернативные сборки, чаще всего LineageOS (бывший CyanogenMod). При этом первым шагом в этом процессе всегда будет так называемая "разблокировка загрузчика". Во время её выполнения устройство несколько раз покажет нам страшные предупреждения о том, что теперь оно станет более уязвимо для злоумышленников, но мы смело нажимаем "подтвердить" и шьём root или самую свежую сборку кастомной прошивки, не задумываясь о том какие проблемы создаёт нам незаблокированный загрузчик. 

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

Интересующихся приглашаю под кат.

Читать далее

Поэтический дискурс с привкусом реверс-инжиниринга

Reading time8 min
Views14K

«Старик Ассемблер нас заметил,
И в гроб сходя, благословил»


image

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

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

AI на минималках 2: Генератор стихов на Prolog

Reading time11 min
Views37K

AI на минималках 2: Генератор стихов на Prolog


Мемная картинка


На картинке — четверостишье, сгенерированное моей программой.


Оказывается "стихи" писать легко, нужно только знать несколько необходимых ингредиентов: размер, ритм, рифма. "Стихи" в кавычках, потому что в настоящем стихосложении, как и в любом другом искусстве, незыблемых законов нет. Однако в классике (русской силлабо-тонике) очень много правил, при соблюдении которых получается писать неплохие стихи, даже если вы никогда раньше этого не делали. Причём эти правила довольно просто программируются: "в строке должно быть равно N слогов", "нечётные строки должны рифмоваться", "ударные и безударные слоги в строке должны идти в определённом порядке" и т.д. Перечислив все правила, я свёл задачу генерации стихов к простому комбинаторному поиску. Язык Prolog как раз и предназначен для таких задач — описании правил и генерации объектов, выполняющих эти правила.


Кто хочет научится писать стихи и познакомиться с Prolog, прошу под кат.

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

Прямой доступ к диску из python

Reading time6 min
Views29K
image

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

Появляется у меня периодически необходимость тестирования большого количества жестких дисков. Обычно для этого используется досовая Victoria загружающаяся по сети. Она тестирует диски по одному, что не очень удобно. К тому же последнее время пошли платы не имеющие режима IDE, что дополнительно усложняет задачу. По началу у меня возникла идея взять готовый софт под линукс с открытыми исходниками и добавить ему возможность параллельного тестирования нескольких дисков. После беглого поиска выяснилось удручающее состояние этой области в линуксе. Из софта, ведущего при тестировании статистику по времени доступа к секторам и типам ошибок нашел только whdd. Попытка разобраться с кодом whdd закончилась полным провалом. Для меня, ни разу не программиста, код показался очень запутанным. К тому же большую его часть занимает совсем не работа с железом.

Поняв, что простого решения не предвидится я решил попробовать написать подобную программу самостоятельно. Понимая, что подобный проект на C я не осилю я начал изучать возможность прямой работы с дисками из python, которым я частенько пользуюсь для решения простых задач и люблю за простоту и понятность. Информации по этому вопросу в сети кот наплакал, но все же я выяснил, что существует модуль fcntl который в том числе позволяет отправлять устройству ioctl запросы. Теперь у меня появилась возможность отправлять команды диску. Но в линуксе все диски считаются scsi дисками, а для тестирования нужно передавать диску непосредственно ata команды. Оказалось существует механизм ATA Command Pass-Through, позволяющий обернуть ata команду в scsi запрос. Основную информацию о том, как это использовать удалось почерпнуть из исходных текстов проекта sg3_utils. Осталось попробовать реализовать это все на питоне.
Читать дальше →

Точные и быстрые вычисления для чисел с плавающей точкой на примере функции синуса. Введение и часть 1

Reading time6 min
Views29K
Внимательно прочитал очень хорошие статьи от ArtemKaravaev по сложению чисел с плавающей точкой. Тема очень интересная и хочется её продолжить и показать на примерах, как работать с числами с плавающей точкой на практике. В качестве эталона возьмём библиотеку GNU glibc (libm). А чтобы статья не была уж скучной, добавим соревновательную составляющую: попробуем не только повторить, но и улучшить код библиотеки, сделав его более быстрым/точным.

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

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

Статьи будут написаны методом погружения. Будут обсуждаться подзадачи, которые потом соберутся вместе в единое решение проблемы.
Читать дальше →

Как я делаю цифровую минигитару

Reading time11 min
Views30K
image

В этой статье я постараюсь в общих чертах описать путь создания девайса от идеи до реализации юзабельного прототипа.

Меня зовут Дмитрий Дударев. Я занимаюсь разработкой электроники и очень люблю создавать различные портативные девайсы. Еще я люблю музыку. Полгода назад я взял у друга акустическую гитару чтобы попытаться научиться на ней играть по урокам из ютуба и табулатурам. Было тяжело. То ли я неправильно что-то делал, то ли плохо старался, то ли в обществе моих предков мелкая моторика вредила размножению. В любом случае, ничего кроме звуков дребезжащих струн у меня не выходило. Мое негодование усиливала постоянная расстройка струн. Да и окружающим тысячный раз слушать мою кривую Nothing else matters удовольствия не доставляло.

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

Загадочное происхождение настольной игры про взлом кодов Mastermind

Reading time12 min
Views19K

Она стала мировой сенсацией. Её использовали в Fallout. Она помогла созданию отрасли кибербезопасности. Но откуда же она взялась?

«Это неинтересно», — думал Дэн Тейтел.

В Fallout 3 есть куча компьютерных терминалов, и если игрок хотел взломать один из них, ему нужно было победить в мини-игре, абстрактно представляющей процесс хакинга. Тейтел, работавший в 2007 году программистом Fallout в компании Bethesda, отвечал за реализацию дизайна этой мини-игры, и он считал, что игроки её возненавидят. «В ней использовались появляющиеся на экране буквы и таймер обратного отсчёта — ещё одна мини-игра, которую геймеры бы назвали скучной и назойливой. Я не был гейм-дизайнером, но считал своим долгом каким-то образом усовершенствовать эту идею».

Спустя несколько дней, по-прежнему не сумевший придумать ничего лучшего Тейтел получил электронное письмо от своего друга Боба. «Оно показалось мне потрясающим даром богов… я открыл письмо с сообщением „Привет, помнишь это?“ и ссылкой на онлайн-версию игры Mastermind».

Тейтел был на седьмом небе от счастья. Mastermind станет интересной игрой.


В этом году настольной игре Mastermind, посвящённой взлому кодов, исполняется 50 лет. Но на самом деле она старше, и никто не знает, насколько. Иронично то, что это игра про взлом кодов, источники происхождения обнаружить не удалось.
Читать дальше →

Я есть root. Разбираемся в повышении привилегий ОS Linux

Reading time9 min
Views69K

Первый квартал 2020 года я провел за подготовкой к экзамену OSCP. Поиск информации в Google и множество «слепых» попыток отнимали у меня все свободное время. Особенно непросто оказалось разобраться в механизмах повышения привилегий. Курс PWK уделяет этой теме большое внимание, однако методических материалов всегда недостаточно. В Интернете есть куча мануалов с полезными командами, но я не сторонник слепого следования рекомендациям без понимания, к чему это приведет.


Мне хочется поделиться с вами тем, что удалось узнать за время подготовки и успешной сдачи экзамена (включая периодические набеги на Hack The Box). Я испытывал сильнейшее ощущение благодарности к каждой крупице информации, которая помогала мне пройти путь Try Harder более осознанно, сейчас мое время отдать должное комьюнити.


Я хочу дать вам мануал по повышению привилегий в OS Linux, включающий в себя разбор наиболее частых векторов и смежных фишек, которые вам обязательно пригодятся. Зачастую сами механизмы повышения привилегий достаточно несложные, трудности возникают при структурировании и анализе информации. Поэтому я решил начать с «обзорной экскурсии» и далее рассматривать каждый вектор в отдельной статье. Надеюсь, я сэкономлю вам время на изучение темы.


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

Как добавить уведомления в реальном времени в Laravel с помощью Pusher

Reading time14 min
Views21K
Перевод статьи подготовлен специально для студентов курса «Framework Laravel».




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

К счастью, с Laravel и Pusher реализация этого функционала довольно проста.

Уведомления в реальном времени


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

Лучшим подходом является использование возможностей WebSockets и получение уведомлений в момент их отправки. Это именно то, что мы собираемся реализовать в этой статье.
Читать дальше →

Снегоходы, пиво и деривативы на погоду

Reading time8 min
Views11K

Хендрик Аверкамп. Сцена на льду. ок. 1615–1630 г. Музей Тейлора, Харлем.

Канадская компания Bombardier, известная нам своими самолётами, помимо всего прочего производит и снегоходы. Собственно, со снегоходов всё и началось, когда в 30-е годы прошлого века Жозеф‑Арман Бомбардье разработал первые серийные образцы.

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

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

Backblaze — статистика жестких дисков за 2019

Reading time4 min
Views30K


На 31 декабря 2019 г. у нас 124 956 работающих жестких дисков. Из них 2 229 загрузочных и 122 658 с данными. В данном обзоре мы рассмотрим статистику по отказам среди жестких дисков с данными. Также рассмотрим 12 и 14 TB версии дисков и новые 16 TB, которые мы активно используем с начала четвертого квартала 2019 года.


Статистика за 2019 год


На конец 2019 года мы мониторили 122 658 жестких дисков, использующихся для хранения данных. Мы убрали из расчета диски, которые использовались для тестирования, и диски, у которых нет наработки ~5 000 диско-дней (на модель) в течение четвертого квартала. Таким образом, мы собрали данные на основе 122 507 жестких дисков. Таблица ниже отображает нашу статистику:

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

FOSS News №2 — обзор новостей свободного и открытого ПО за 3-9 февраля 2020 года

Reading time9 min
Views5.7K


Всем привет!

Продолжаю обзор новостей свободного и открытого ПО (и немного железа). В этот раз постарался брать не только российские источники, но и англоязычные, надеюсь получилось интереснее. Кроме того, кроме собственно новостей, добавлено немного ссылок на вышедшие за прошедшую неделю обзоры и руководства, относящиеся к FOSS и показавшиеся мне интересными.

В выпуске №2 за 3-9 февраля 2020 г.:

  1. конференция FOSDEM 2020;
  2. код WireGuard войдёт в Linux;
  3. Canonical предоставляет дополнительные возможности для сертифицированных поставщиков оборудования;
  4. Dell анонсировал новую версию топового ультрабука на Ubuntu;
  5. проект TFC предлагает «параноидально» защищённую систему обмена сообщениями;
  6. суд поддержал разработчика, выступившего в защиту GPL;
  7. ведущий японский hardware вендор подключается к Open Invention Network;
  8. стартап привлёк 40 миллионов долларов инвестиций для упрощения доступа к облачным Open Source проектам;
  9. открыт исходный код платформы контроля за промышленным интернетом вещей;
  10. в ядре Linux решена проблема 2038-го года;
  11. ядро Linux получит возможность решить проблему разделённых блокировок;
  12. в чём венчурный капитал видит привлекательность Open Source;
  13. CTO IBM Watson заявил о критической необходимости Open Source для динамически растущей области «периферийных вычислений»;
  14. использование Open Source утилиты fio для оценки производительности дисков;
  15. обзор лучших открытых Ecommerce платформ в 2020;
  16. обзор FOSS решений для работы с кадрами.
Читать дальше →

Реверс-инжиниринг домашнего роутера с помощью binwalk. Доверяете софту своего роутера?

Reading time10 min
Views76K


Несколько дней назад, я решил провести реверс-инжиниринг прошивки своего роутера используя binwalk.


Я купил себе TP-Link Archer C7 home router. Не самый лучший роутер, но для моих нужд вполне хватает.


Каждый раз когда я покупаю новый роутер, я устанавливаю OpenWRT. Зачем? Как правило производители не сильно заботятся о поддержке своих роутеров и со временем софт устаревает, появляются уязвимости и так далее, в общем вы поняли. Поэтому я предпочитаю хорошо поддерживаемую сообществом open-source прошивку OpenWRT.


Скачав себе OpenWRT, я так же скачал последний образ прошивки под мой новый Archer C7 с официального сайта и решил проанализировать его. Чисто ради фана и рассказать о binwalk.

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

Linux. Настройка клавиатуры

Reading time7 min
Views112K

Для чего вообще специально настраивать клавиатуру?


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


Почему я захотел изменить свою клавиатуру?


Во-первых, когда я начал использовать vim как основной редактор, я понял, что не хочу каждый раз тянуться к ESC. Кроме того, я писал в основном на питоне, поэтому ; нажимал сильно реже, чем :, а в vim разница стала более явной.


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

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

Веб тренды 2020, которые стоит попробовать

Reading time5 min
Views28K


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


Расширяемость (Extensibility)


Расширяемость это когда вы можете взять технологию и расширить ее для своих нужд. На протяжении нескольких лет мы используем компоненты повсюду, как в качестве разработки приложений (компоненты на React, Vue, Svelte) так и в качестве разработки дизайна (дизайн системы).


На данный момент мы пытаемся сделать эти компоненты более уникальными и удобными для использования. Расширяемость в вебе позволяет нам использовать платформу (браузеры, html/css/js движки) для собственных нужд и экспериментов, разумеется для получения большей выгоды.

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

Выявляем процессы с дисковой активностью в Linux

Reading time13 min
Views85K
TL;DR: статья рассказывает об удобном, быстром и надежном способе определения Linux-программ, записывающих данные на диск, что помогает в выявлении большой или аномально частой нагрузки на дисковую подсистему, а также позволяет оценить накладные расходы файловой системы. Это особенно актуально для SSD в ПК, EMMC и Flash-памяти в одноплатных компьютерах.
В ходе написания статьи обнаружилось, что запись нескольких килобайт данных на файловую систему BTRFS приводит к записи 3 мегабайт реальных данных на диск.

Введение

«Ой, ерунда, ячейки памяти на современных SSD выйдут из строя через десятки лет обычного использования, не стоит об этом беспокоиться, и уж тем более переносить swap, виртуальные машины и папку профиля браузера на HDD» — типичный ответ на вопрос о надежности твердотельных накопителей c гарантированными ≈150 TBW. Если прикинуть, сколько типичное ПО может писать данных, то кажется, что 10-20 ГБ в сутки — уже большая цифра, пусть будет максимум 40 ГБ, куда уж больше. При таких цифрах ответ вполне разумен — нужно 10 лет, чтобы достичь гарантированных значений по количеству перезаписи ячеек, при 40 ГБ записанных данных ежедневно.
Однако за 6 лет я пользуюсь уже третьим SSD: у первого вышел из строя контроллер, а второй начал перемещать данные между ячейками несколько раз в день, что оборачивалось 30-секундными задержками в обслуживании записи.

После 7 месяцев использования нового SSD я решил проверить количество записанных данных, как их сообщает сам диск через SMART.
19.7 ТБ.
Всего за 7 месяцев я использовал 13% от гарантированного количества записанных данных, притом, что он настроен в соответствии с рекомендациями по выравниваю разделов и настройке ФС, swap у меня почти не используется, диски виртуальных машин размещены на HDD!
Читать дальше →

Information

Rating
6,237-th
Location
Москва и Московская обл., Россия
Date of birth
Registered
Activity