Pull to refresh
12
0.1
Влад @iamkisly

Сферический разработчик в вакууме

Send message

Range Extender на NRF24L01+PA+LNA: обмен текстовыми сообщениями между устройствами там, где нет сотовой связи

Level of difficultyEasy
Reading time11 min
Views9.7K
Картинка Pressfoto, Freepik

Эта идея появилась у меня достаточно давно, и наконец-то дошли руки её частично реализовать. А именно: хотелось попробовать сделать средство общения с помощью известного радиопередатчика NRF24L01+PA+LNA.

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

Читать дальше →
Total votes 44: ↑42 and ↓2+56
Comments36

Как правильно маркировать рекламу после получения токенов из ОРД?

Level of difficultyMedium
Reading time7 min
Views27K

При исполнении закона о маркировке рекламы необходимо не только полноценно оформлять свою отчетность по доходному договору в ОРД (оператор рекламных данных), но и правильно нанести атрибуты маркировки на рекламные материалы.

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

Как мы Steam Deck Verified получали

Level of difficultyEasy
Reading time4 min
Views3.3K

Это небольшой рассказ о том, как мы получили заветную плашечку Steam Deck Verified для нашей игры The Unexpected Quest. Причем, никто из нас даже в руках не держал этот ваш Steam Deck.

Читать далее
Total votes 9: ↑6 and ↓3+4
Comments0

Outlook как сервер микросервисов

Reading time8 min
Views3K

Доброго времени суток. 

Ты ж у нас один программист !!!
Небольшая вводная. Я для друзей, по их запросам, выгружаю данные из MS SQL Server'а. Друзья дают исходные данные, для которых надо сделать выгрузку в файлах .csv. Исходных данных (ИД) может быть от 1 до ... строк. Я загружал данные в sql таблицу с помощью задачи или Task в английской версии в SQL Server Management Studio (SSMS). Исторически сложилось, что все sql файлы со скриптами хранятся на моем ПК. Я файлы открывал в SSMS и запускал на выполнение. Результаты записывал в файл и отправлял сообщение, что обработка выполнена. Друзья забирали файлы с результатами. 

Но в один творческий день пришла идея автоматизировать этот процесс, чтобы Друзья все делали сами, с минимальным моим участием. 

Читать далее
Total votes 7: ↑4 and ↓3+3
Comments6

Еще раз про асинхронную машину состояний и где именно там аллокации

Level of difficultyMedium
Reading time8 min
Views19K

Несмотря на то, что про async/await уже было сказано много слов и записано множество докладов, тем не менее, в своей практике преподавания и наставничества, я часто сталкиваюсь с недопониманием устройства async/await даже у разработчиков уровня Middle+. В данной статье мы подробно рассмотрим машину состояний, сгенерированную компилятором из асинхронного метода для понимания принципа работы асинхронности в C#, разберемся где именно там аллокации и порешаем задачи для самопроверки. Если вы уже раз сто видели как выглядит асинхронная машина состояний, но все равно недопонимаете ее, тогда эта статья для вас.

Читать далее
Total votes 23: ↑21 and ↓2+24
Comments9

Async/Await в C#. Часть 5. Функция-перечисление и цикл через рекурсию, асинхронный вызов без Async/Await

Level of difficultyMedium
Reading time8 min
Views6.2K

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

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

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

«Отучаем» WinFXNet от жадности (часть 1)

Level of difficultyEasy
Reading time18 min
Views9.9K

Предыстория

В сфере АСУ ТП инженерам по работе приходится не только писать ПО, но и использовать готовое ПО от производителей оборудования. В связи с санкциями, многие поставщики покинули РФ, а оборудование и ПО необходимо продолжать эксплуатировать дальше.

В данной статье будет расмотрена WinFXNet - программа производителя Schneider Electric (ESMI) для конфигурирования станций пожарной сигнализации серии Esmi FX. К сожалению, из-за санкций, ключ USB Esmi FX FFS00393016 приобрести нельзя, а он, в свою очередь, имеет встроенный таймер, который настроен на 4-летний период. У многих данный ключ по времени уже закончился, плюс скоро закончится и лицензия на само ПО (файл формата lic). Поэтому достаем дизассемблеры и посмотрим, можно ли обойти данную защиту.

Disclaimer: Данная заметка написана в ознакомительных целях и не является руководством к действиям. Хотя, понимая всю безвыходность данной ситуации, как временное решение имеет право на жизнь, но решать только вам. Статья написана как туториал, поэтому постараюсь детально описать все шаги поиска нужных мест в программе.

Приступить к анализу
Total votes 88: ↑83 and ↓5+91
Comments28

Дамп разделов TV-бокса на чипе RK3528

Level of difficultyMedium
Reading time10 min
Views16K

Заметил в продаже новенький TV-бокс H96 MAX M1 на чипсете Rockchip RK3528, с 4Гб памяти, новым 13-м Андроидом, и подозрительно дешевый. Зная, что на старых чипах Rockchip уже запускали Линукс, я решил заказать и попробовать.

Можете заметить разъёмы питания/USB/HDMI/AV... Как думаете, в чём подвох? Наверное на другом боку еще пара USB и слот для карты памяти, но нет - других разъёмов для вас нет. Сразу напишу - разработчикам такое покупать не стоит, это создаёт много проблем, но раз уж купил - то работаю с чем есть.

Для запуска Линукс первым делом надо получить оригинальный Device Tree, вытащив .dtb из boot или recovery раздела. Этим я и занялся. Rockchip устройств у меня еще не было и по отзывам у меня складывалось ощущение производителя, что не ставит палки в колёса разработчикам, но оказалось - это уже в прошлом.

Инструкции написаны для пользователей Линукс.

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

Программируем и отлаживаем STM32 через USB Type-C порт, не нарушая спецификации USB

Level of difficultyEasy
Reading time2 min
Views15K

USB Type-C - действительно универсальный порт.

В данной статье я расскажу о том, как использую Type-C для отладки устройств на STM32. По каким линиям проведен интерфейс SWD, чтобы не нарушить спецификацию USB и сохранить совместимость со всеми устройствами, как сделать свой программатор, и в чем плюсы и минусы этого решения под катом.

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

Получаем JTAG на iPhone 15

Level of difficultyEasy
Reading time6 min
Views14K

Месяц назад Apple выпустила iPhone 15 — свой первый смартфон с разъёмом USB-C. Предыдущие полтора года я занимался аппаратным хакингом iPhone, например, мы выпустили опенсорсный последовательный JTAG-адаптер для iPhone под названием Tamarin Cable. Компания Apple наконец-то перешла на USB-C, поэтому мне стало любопытно, можно ли сделать что-то подобное с iPhone 15. Я купил по предзаказу этот телефон, пару печатных плат и набор электронных компонентов.

Прежде всего нужно сказать, что это не уязвимость и не jailbreak, я просто исследую USB-C в iPhone 15 и развлекаюсь со взломом оборудования.
Читать дальше →
Total votes 83: ↑83 and ↓0+83
Comments1

Как я делал первую маркировку рекламы в своём Телеграм-канале (пошаговая инструкция)

Reading time7 min
Views9.6K

У меня небольшой авторский канал на 3 000 подписчиков. Рекламу в нём я продаю как самозанятое физическое лицо (эту роль взяла на себя моя жена). Поэтому рассказ будет о маркировке текстового рекламного поста, где заказчик и исполнитель — физические лица. С помощью кабинета ОРД Вконтакте, который пока что бесплатен.

Читать далее
Total votes 10: ↑7 and ↓3+9
Comments11

TypeScript и все что тебе нужно в разработке

Level of difficultyMedium
Reading time6 min
Views31K

Все для работы с продвинутым TS внутри. Generic Types, Mapped Types, Types Guard, Utility Types и многое другое. Шпаргалка с навигацией и примерами.

К изучению
Total votes 18: ↑14 and ↓4+12
Comments12

Как создать бота ВКонтакте: гайд для старта на платформе

Reading time5 min
Views56K

Автоматизируем рутинные процессы с помощью платформы ботов VK — подборка материалов для разработчиков

Привет! Меня зовут Семён, я деврел платформы ботов ВКонтакте. Расскажу о том, как с ней работать, какие есть возможности и перспективы для разработчиков. В этой статье вы найдёте краткий пошаговый мануал: от поиска идеи для вашего чат-бота до проектирования его бизнес-возможностей. К каждому этапу будут ссылки на полезные материалы и источники, где можно узнать больше и погрузиться в технологию. 

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

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

Почему тип поля enum на уровне базы — зло

Level of difficultyEasy
Reading time4 min
Views32K

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

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

Но это в теории. А что на практике? Рассмотрим под катом.

Читать далее
Total votes 33: ↑14 and ↓190
Comments178

Тайны виртуальных конвертов: чтение и парсинг .pst файлов

Level of difficultyEasy
Reading time5 min
Views3.5K

Привет, Хабр!

Меня зовут Максим Саввин, я участник профессионального сообщества NTA.

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

Узнать больше
Total votes 5: ↑4 and ↓1+3
Comments0

Почему телевизоры за последние годы упали в цене на 97%. И почему вам стоит этого бояться

Reading time8 min
Views54K

Вы, может быть, не заметили, но с телевизорами в последнее время творится что-то неладное.

Лет тридцать назад телевизор был почти предметом роскоши. И не только в странах бывшего СССР. Даже в Америке они, цветные и ламповые, продавались минимум за 800 долларов (то есть около 2500 долларов сегодня с поправкой на инфляцию). Семьи пользовались одним и тем же телевизором на протяжении нескольких поколений. Он хранился у многих дольше, чем автомобиль.

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

Читать далее
Total votes 62: ↑50 and ↓12+59
Comments409

Три способа отладки T-SQL кода

Level of difficultyEasy
Reading time4 min
Views8.9K

Написание нового кода = ошибки. С этим всё просто.

Избавится от ошибок – вот это сложная задача.

Программисты привыкли, что в их средствах разработки есть встроенные инструменты, показывающие, какая строка кода сейчас работает, отображают текущее содержимое переменных, выводят сообщения о процессе выполнения и т.д. Какое-то время в SQL Server Management Studio тоже был отладчик кода, но, начиная с версии SSMS v18, он был удален. Хотя даже когда отладчик был, я не фанател от него: SQL Server буквально мог прекратить обработку других запросов, пока выполнял ваш запрос. Это была катастрофа, особенно когда ваш запрос блокировал других пользователей, и всё это происходило на рабочей базе.

Мне бы хотелось, чтобы у нас был простой способ отладки T-SQL на рабочей базе без блокировок, но отладка T-SQL отличается от отладки в C#. Так что если ваш T-SQL код делает не то, что вы ожидали, вот несколько хороших способов для его отладки.

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

Разбираемся с использованием неблокируещего ввода-вывода в ОС Linux. Пишем пример сервера на голых системных вызовах

Reading time11 min
Views13K

Как обычно пишут сервер, если не особо заботиться производительности? Программа запускается, затем начинает принимать входящие соединения от клиентов и для каждого клиента запускает новый поток, который занимается обслуживанием этого клиента. Если вы используете какой-нибудь, прости господи, Spring или Flask или там Poco, то он что-такое внутри себя и делает - разве что потоки можно переиспользовать, то есть брать из некого пула. Это всё довольно удобно, но не слишком эффективно. Скорее всего, ваши потоки, обслуживающие клиентов, живут недолго и большую часть времени ожидают либо получения данных от клиента, либо отправки их клиенту - то есть ждут возвращения системных вызовов. Создание потока ОС - довольно дорогая операция, как и переключение контекста между потоками ОС. Если вы хотите уметь обслуживать много клиентов эффективно, надо придумать что-то другое. Например, коллбеки. Но это довольно неудобно.

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

Как в панельном доме заменить старый конвектор на новый радиатор, чтобы не пожалеть о полученном результате?

Reading time28 min
Views54K

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

В этом видосике сошлись в смертельной схватке два «блогера‑сантехника», каждый из которых считал, что только он прав.

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

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

Особый интерес к этой теме у меня возник потому, что я сам лично как‑то собрался поменять такую старую облезлую «гармошку» (см.рис.1) на новый белый и красивы биметаллический радиатор (см.рис.2).

Читать далее
Total votes 147: ↑142 and ↓5+179
Comments304
1

Information

Rating
2,343-rd
Location
Краснодар, Краснодарский край, Россия
Registered
Activity

Specialization

Backend Developer, Прокрастинатор
Git
SQL
.NET
MSSQL
ASP.NET Web API
.NET Core
ASP.Net
Database