Pull to refresh
32
0.2
ionicman @ionicman

User

Send message

Учимся читать QR-коды без компьютера

Level of difficultyMedium
Reading time4 min
Views42K

Задавались ли вы когда-нибудь вопросом, как работают QR-коды? Если да, то эта статья для вас. Здесь вас ждёт интерактивное объяснение*, которое мы составили для семинара, проводившегося в рамках Всемирного конгресса хакеров 37C3, но вы также можете использовать его самостоятельно.

Прочитав статью, вы узнаете:

  • Из чего состоят QR-коды.
  • Как декодировать QR-коды вручную (используя нашу шпаргалку).
Читать дальше →
Total votes 96: ↑93 and ↓3+116
Comments33

GPIO STM32, альтернативный вариант

Level of difficultyEasy
Reading time5 min
Views2.9K

Когда в 2011 году я переходил c atmega8 на stm32, меня очень вдохновил проект opencm3. Но вдохновил не на его изучение, а на написание похожего. На сегодня в моём варианте почти библиотеки есть макросы регистров для микроконтроллеров серий stm32f10x и stm32f40x, stm8s003, nrf51, nrf52, rp2040, и cc2640/1310. Реально же протестирована из этого списка только stm32f103. Кроме регистров для 103-й я написал базовые функции для включения/выключения тактирования периферии и управления портами ввода‑вывода. А также написаны примеры для USB профилей HID gamepad, HID keyboard и USB serial port. В этом же посте задокументирую функции портов и тактирования.

документация к c-шникам
Total votes 6: ↑6 and ↓0+9
Comments17

Контроль привычек на запястье: как Mi Smart Band 7 поможет не забывать важное

Reading time13 min
Views11K

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

«Если это действительно важно, то отмечайте даты на упаковке, используйте таблетницу или заведите будильник на телефоне», — скажете вы. Да, это решение. Но у меня есть фитнес-браслет, который, как заявляется, следит за моим здоровьем. Почему бы не научить его отвечать на вопрос «Не забыл ли я “…”»?

В тексте я расскажу про тернистый путь разработки под Mi Smart Band 7 и объясню важные детали для быстрого старта. В результате получится циферблат, который позволяет считать количество наиболее важных рутинных действий за день. Бонусом расскажу о приложении для броска кубиков 1d20 и 2d20.
Читать дальше →
Total votes 44: ↑41 and ↓3+52
Comments16

Регулярные выражения простыми словами. Часть 1

Level of difficultyEasy
Reading time7 min
Views28K

Разработчики делятся на два типа: тех, кто уже понимает регулярные выражения и порой решает сложные задачи одной строкой, и тех, кто все еще боится и всячески их избегает. Эта статья специально для вторых, чтобы им было проще стать первыми. Она либо поможет преодолеть «регекспофобию», либо усугубит ее. В любом случае, добро пожаловать под кат.
Читать дальше →
Total votes 150: ↑149 and ↓1+174
Comments54

Ещё один набор параметров для разблокировки Ютуба: теперь мобильный

Level of difficultyEasy
Reading time2 min
Views18K

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

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

Выбор инструмента для обхода на этой ОС был невелик: из списка на Гитхабе Валдика есть ровно три Андроид-решения: PowerTunnel, SpoofDPI и ByeDPI. Два последних у меня изначально не заработали, а первый заработал из коробки так хорошо, что я даже не узнал, что под капотом у него целый набор плагинов, в том числе LibertyTunnel, который и обеспечивает обход.

После того, как в понедельник PowerTunnel перестал справляться, я потыкался в настройки, но безуспешно. К сожалению, на Гитхабе автор проекта ничем не смог мне помочь, но я всё равно хочу выразить ему благодарность за два месяца работы мобильного интернета! (А не пародии на него).

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

Читать далее
Total votes 34: ↑31 and ↓3+37
Comments37

7 продвинутых приёмов JavaScript, которые должен знать каждый разработчик

Level of difficultyEasy
Reading time4 min
Views18K

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

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

Давайте разберём 7 продвинутых техник в JavaScript, которые помогут вам вывести свои навыки на новый уровень.

Читать далее
Total votes 31: ↑23 and ↓8+21
Comments10

Транзакции PostgreSQL, Требования ACID, примеры. Подготовка к собеседованию, изучение

Level of difficultyEasy
Reading time10 min
Views13K

Приветствую тебя читатель, я решил написать про ACID и Транзакции PostgreSQL своим языком, с понятными примерами, эта статья ориентирована на людей готовящихся к собеседованию, кто захотел узнать нюансы транзакций в PostgreSQL или про ACID, а также для людей которые знают теорию, но сами ещё ни разу не писали транзакции. Я не ставил перед собой цели рассмотреть и объяснить работу транзакций на очень глубоком уровне. Была цель привести понятные примеры, дать макет работы с транзакциями, а также пощупать основные возможные проблемы при работе с транзакциями в PostgreSQL.

Читать далее
Total votes 8: ↑6 and ↓2+6
Comments9

Эти документы помогут объяснить ФНС РФ, что человек не должен подавать отчет о движении денег по зарубежным счетам

Reading time12 min
Views3.9K

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

И начинают доходить руки у отделов валютного контроля ФНС, позадавать вопросы физлицам-резидентам, кто по мнению ФНС должен был представить отчеты по зарубежным счетам до 01 июня 2024 года, но почему-то это не сделал.

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

Читать далее
Total votes 12: ↑9 and ↓3+9
Comments17

Как мы французскому ПО ценности добавляли, но нас не оценили

Level of difficultyEasy
Reading time16 min
Views17K

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

Эта история произошла после того, как я вернулся из США в 2008 году, где благополучно потратил все свои деньги, полученные от разграбления советских заводов бандой прихатизаторов, во главе с Кахой Бендукидзе. В США я пытался запустить свой стартап, но не преуспел, но это история для мамкиных стартаперов с сайта VC. Здесь же расскажу, что было потом, поскольку это касается разработки и продвижения ПО. И бесплатно дам несколько бизнес-советов, которые за большие деньги можно получить только на курсах Тони Робинсона.

В России, как и во всем мире, в это время, кроме кризиса 2008 года, разворачивалась менее заметная, но не менее эпическая и трогательная история освобождения евреев от пленения фараоном.  Для тех, кто не читал библию, напомню, что Моисей своих евреев, отпущенных из египетского плена, водил 40 лет по пустыне, (навигаторов и Яндекс-карт тогда не было, и назад никто свалить не мог). Ведомые плевались, плакали, матюкались, ругались, но шли по пустыне за Моисеем. Тот же самый библейский сюжет разворачивался в области разработки софта, cо специалистами из французской фирмы-разработчика, той-которую-нельзя-называть, и которая проектирует боевые самолеты Рафал. В недрах этой конторы была разработана система 3D-проектирования CATIA.

Читать далее
Total votes 106: ↑96 and ↓10+103
Comments28

Подробно про JWT

Level of difficultyMedium
Reading time6 min
Views14K

О чем эта статья: мы разберемся, что такое JSON Web Token, как он устроен и для чего используется, рассмотрим такие приемы, как «black-list токенов» и «контроль версий» токенов. Для наглядности, в конце будут блок-схемы клиент-серверных запросов с пояснениями.

Для кого эта статья: для тех, кто хочет детально понять что такое JWT, а так же для тех, кто просто ищет схему реализации.

Читать далее
Total votes 22: ↑20 and ↓2+20
Comments17

Как я пришёл к пониманию основ создания Live-дистрибутивов Linux, решив починить свой старый SSD

Level of difficultyMedium
Reading time28 min
Views22K


Был у меня старенький SSD объёмом 240 Гбайт от Kingston, который внезапно перестал работать, вообще перестал распознаваться в системе. Попробовал я подключить SSD к другому компьютеру, попробовал использовать как внешний диск, ничего не дало результата. Поэтому я купил новый, а этот разобрал.


Внешних признаков, указывающих на то, что SSD сгорел, я не заметил, а интуиция говорила: «Проблема программная». Выбрасывать диск не хотелось, поэтому он остался пылиться до «лучших» времён. И вот недавно захотелось попробовать его починить. К своему удивлению, я достаточно быстро нашёл необходимую статью на Хабре, где рассказывалось, как можно оживить SSD на том же контроллере, что и мой, отдельную тему на форуме Ru-Board, а также статью с подробной инструкцией, по ней я и восстановил свой SSD. Но кроме восстановленного SSD я еще приобрёл и закрепил знания по Linux, которые изложил в этой статье. Всем, кому интересно, добро пожаловать под кат.

Читать дальше →
Total votes 46: ↑46 and ↓0+63
Comments10

3D рендер с редактором карт в Консоли (Часть 1)

Level of difficultyMedium
Reading time13 min
Views5.6K

Привет!

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

Читать далее
Total votes 40: ↑40 and ↓0+54
Comments6

Топ модулей для распознавания рекапчи на Python, Node js и PHP

Level of difficultyEasy
Reading time6 min
Views1.1K

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

Я проанализировал рынок модулей распознавания капчи и у меня получился свой субъективный топ модулей на трех популярных языках программирования. Давайте разбираться!

Читать далее
Total votes 6: ↑3 and ↓3+2
Comments9

BLE адаптер на ESP32 под Ардуино

Level of difficultyEasy
Reading time13 min
Views7.8K

Глядя на обилие дешевых ESP32 модулей захотелось мне сделать из них что нибудь полезное. А именно BLE адаптер с последовательным интерфейсом пригодный для разных применений вроде организации беспроводного канала связи между железками или сбора телеметрии с нескольких устройств.

Читать далее
Total votes 20: ↑19 and ↓1+26
Comments28

Как я создал 175 шрифтов при помощи Rust

Level of difficultyEasy
Reading time19 min
Views7.1K

В декабре 2023 года я выпустил 175 Pixel Font Megapack, за которым вскоре последовали 42 отдельных пака для каждого из семейства шрифтов. Я создал собственный тулчейн для генерации, тестирования и развёртывания этих шрифтов... на Rust! В посте я расскажу об этом процессе.

Читать далее
Total votes 39: ↑37 and ↓2+54
Comments5

JavaScript: структуры данных и алгоритмы. Часть 3

Level of difficultyMedium
Reading time46 min
Views5.7K


Привет, друзья!


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



Сегодня мы будем говорить о таких структурах данных, как деревья. В этой статье мы рассмотрим двоичное дерево поиска, АВЛ-дерево и красно-черное дерево.


Код, представленный в этой и других статьях серии, можно найти в этом репозитории.


Интересно? Тогда прошу под кат.

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

ООП не определяет архитектуру проекта

Level of difficultyEasy
Reading time6 min
Views7.6K

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

Напомню, что модель классов PHP взята из Java. Наличие интерфейсов и всех сопутствующих элементов очень сильно влияет на способ организации кода в PHP. Этот способ часто отличается от того, как организуется код в JavaScript, Ruby или Python. И ещё больше отличается от таких языков, как Clojure или Elixir. И всё это на фоне того, что в каждом из этих языков есть ООП.

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

Так где же правда? Правда в том, что есть вещи, которые действительно определяют архитектуру кода. И это не структура классов, не наличие интерфейсов и не использование полиморфизма.

Возьмём тот же MVC. В нём говорится о слоях, об их задачах (зонах ответственности) и способе взаимодействия друг с другом. Это крайне важно для модульности. В модульной системе отсутствуют циклические зависимости. В MVC ничего не говорится про классы и ООП в целом, потому что между этими понятиями нет связи. Реализовать MVC можно в любом языке общего назначения, каким бы он ни был. То же самое можно сказать обо всех других архитектурных шаблонах.

Архитектура опирается на особенности среды, в рамках которой она применяется, а не на конструкции языка. Например, в вебе господствует HTTP, который построен вокруг концепции "запрос-ответ". Именно поэтому микрофреймворки разных языков выглядят так похоже, независимо от того, есть там ООП или нет: в каждом микрофреймворке есть запрос, ответ и обработчик ответа.

Подробнее о разработке я пишу в своем телеграм-канале организованное программирование. Присоединяйтесь если статья понравилась :)

Читать далее
Total votes 20: ↑19 and ↓1+22
Comments20

Различные вычисления, многопоточность, асинхронность и мультипроцессность в Python

Level of difficultyMedium
Reading time9 min
Views11K

Всем привет! Меня зовут Дмитрий Первушин, я лидер Python-компетенций трайба ИСУ в Сбере. 

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

Читать далее
Total votes 31: ↑28 and ↓3+38
Comments17

Тысяча и одна библиотека С++

Reading time65 min
Views28K

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

Столкнувшись много раз подряд с тем, что найти что-то толковое довольно непросто, я решил попробовать распутать это узел и предложить для русскоязычных читателей свой справочник классных библиотек на С++. Я исходил из этого источника. Это очень многогранный и объемный список библиотек языка С++, но, скажем так, у меня были к нему вопросы. Потому я сделал перевод, затем значительно улучшил его в плане содержания (далее объясню, как, почему и зачем). На выходе получилось около 1000 библиотек. Как в сказке). Они, конечно, не покрывают все возможные задачи и предметные области, но поверьте, они затрагивают действительно многое.

Прикоснуться к сокровищнице языка С++
Total votes 82: ↑81 and ↓1+92
Comments23

Насколько быстр Javascript? Симулируем 20 миллионов частиц

Level of difficultyEasy
Reading time23 min
Views23K

Я бросил себе вызов: симулировать 1000000 (миллион) частиц на чистом Javascript на телефоне, используя только CPU и добившись 60 FPS.

Поехали.

Задача не особо сложна, если выполнять всю работу на GPU, но правило гласит, что нужно пользоваться только CPU, при этом работая на JS, так что никакого WASM.

Читать далее
Total votes 109: ↑108 and ↓1+133
Comments34
1
23 ...

Information

Rating
2,500-th
Registered
Activity