Pull to refresh
-5
0
Send message

Анонимный обмен файлами в реалиях глобального наблюдателя

Level of difficultyHard
Reading time20 min
Views9K

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

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

Отправляем и принимаем SMS с помощью SIM868 и Repka Pi

Level of difficultyMedium
Reading time19 min
Views3.6K

В этой статье мы продолжим рассказ об использовании модуля GSM/GPRS/GNSS Bluetooth HAT, созданного на базе SIM868, для беспроводной передачи данных в виде СМС-сообщений через Российский одноплатник Repka Pi. Такой способ даже в наше время актуален, когда нужно управлять автоматикой или другими устройствами, когда 2G/3G/4G и даже GPRS не позволяет это делать из за удалённости/помех или по иным причинам и важно обеспечить высокую надёжность управления.

Это третья статья данного цикла и из первой статьи вы узнали, как с помощью упомянутого модуля обмениваться данными между микрокомпьютером Repka Pi с JSON-сервисом, доступным в интернете, по каналу GPRS. Вторая статья рассматривает такой обмен глубже, на уровне AT-команд, передаваемых в модуль через UART.

Теперь настала очередь рассказать об отправке и приеме коротких текстовых сообщений SMS (Short Message Service). Этот канал передачи данных пригодится, например, в тех случаях, если в месте расположения вашего оборудования недоступен ни WiFi, ни GPRS.

Сообщения SMS можно передавать в текстовом режиме, а также в так называемом режиме PDU (Protocol Data Unit). В первом случае длина сообщения не может превышать 160 байт, и в нем не должно быть символов кириллицы. Пользоваться режимом PDU сложнее, но в нем нет этих недостатков.

Далее мы рассмотрим работу в обоих режимах как с помощью Python и библиотеки RoverConnect, так и через AT-команды.

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

Читать далее
Total votes 14: ↑13 and ↓1+12
Comments8

Об импортозамещении MATLAB/Simulink на примере модели динамики авиационного средства поражения

Level of difficultyMedium
Reading time6 min
Views11K

Когда-то давно меня попросили разработать модель динамики полета АСП (авиационного средства поражения) в отечественном ПО, в среде SimInTech, причем разработать не с нуля, а тупо повторив уже созданную ранее модель в Матлабе (с Симулинком), и любезно выложенную в публичный доступ на гитхабе.

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

Читать далее
Total votes 82: ↑63 and ↓19+44
Comments44

Собираем автономную игру на C# в 2 килобайтах

Level of difficultyMedium
Reading time11 min
Views20K

Моё детство пришлось на эпоху 1,44-мегабайтных дискет и 56-килобитных модемов, поэтому я всегда любил маленькие программы. Раньше можно было записать на дискету кучу мелких игр и таскать её с собой. Если программа не помещалась на дискету, я задумывался, почему — в ней много графики? Есть музыка? Возможно, она выполняет много сложных операций? Или она просто раздута?

В наши дни дисковое пространство стало настолько дешёвым, что люди отказались от оптимизации по размеру.

Размер важен только при передаче: если вы передаёте программу по проводам, мегабайты равны секундам. По быстрому соединению на 100 Мбит в лучшем случае можно передать 12 МБ в секунду. Если на другом конце провода находится человек, ожидающий завершения скачивания, то разница между пятью и одной секундой может существенно повлиять на его ощущения.

Человек может зависеть от времени передачи как напрямую (пользователь, скачивающий программу по сети), так и косвенно (serverless-сервис, отвечающий на веб-запрос).

Люди обычно воспринимают всё, что длится меньше 0,1 секунды, как мгновенное, 3 секунды — это примерно тот предел, после которого прерывается состояние потока пользователя; а уж 10 секунд удержать внимание пользователя очень сложно.

Хотя уменьшение сегодня уже необязательно, оно всё равно лучше.

Эта статья задумывалась как эксперимент, позволяющий выяснить, каким может быть минимальный размер полезного автономного исполняемого файла C#. Могут ли приложения на C# достичь размеров, при которых пользователи будут ощущать их скачивание как мгновенное? Позволит ли это использовать C# там, где он не используется сейчас?
Читать дальше →
Total votes 128: ↑127 and ↓1+126
Comments34

День Победы. Мой Бессмертный полк

Level of difficultyEasy
Reading time4 min
Views34K
День Победы!

Сегодня для меня это единственный настоящий праздник, настоящий всенародный праздник.
В этом году по понятным причинам не будет на улицах шествий Бессмертного полка, он будет проходить в других форматах. Один из таких форматов это рассказ об участниках Великой отечественной войны на страницах социальных сетей.
Поскольку мы находимся на Хабре, то я взял на себя смелость вспомнить о своих учителях непосредственных участников той войны, и кто привел меня на стезю программирования.
Читать дальше →
Total votes 439: ↑274 and ↓165+109
Comments39

Семафоры в Linux медленно сходят со сцены

Reading time6 min
Views27K

С годами подходы к обработке конкурентности в ядре Linux сильно изменились. К 2023 году в арсенале разработчиков ядра появились, в частности, автозавершения, хорошо оптимизированные мьютексы, а также россыпь неблокирующих алгоритмов. Но были времена, когда управление конкурентностью сводилось к использованию обычных семафоров. Дискуссия о внесении небольшого изменения в API семафоров лишний раз свидетельствует, как сильно они изменились за долгую историю ядра.

Читать далее
Total votes 57: ↑56 and ↓1+55
Comments29

Мой поиск аналога Microsoft Visio

Level of difficultyEasy
Reading time5 min
Views49K

Доброго дня всем.

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

Читать далее
Total votes 39: ↑36 and ↓3+33
Comments64

Быстрое нахождениe остатка от деления больших чисел для делителей специального вида

Level of difficultyMedium
Reading time11 min
Views6.1K

В этой статье я расскажу об одном способе вычисления x mod p, для p вида (2 ** n - omega), причём omega значительно меньше 2 ** n. Напишу генератор констант на Python. Приведу пару игрушечных примеров на С++, для которых может быть выполнено исчерпывающее тестирование для всех возможных аргументов. А в качестве серьёзной проверки - вычислю 97! mod (2 ** 256 - 2 ** 32 - 977).

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

Как выжать 1,5 терафлопса производительности для 32-битных чисел с плавающей точкой на одном процессоре M1

Level of difficultyMedium
Reading time6 min
Views7.8K

Если вы занимаетесь обучением крупных современных нейросетей, эта статья будет вам не совсем в тему, ведь у A100 скорость в сто раз выше (156 терафлопсов).


Так что же интересного в этих полутора терафлопсах?


  • работа на одном ядре MacBook Air 2020 года с питанием от батареи;
  • выполнение с задержкой ~0,5 наносекунды на инструкцию.

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

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

Ложнопозитивный WAF, или Как (не) купить себе кирпич

Reading time19 min
Views3.1K

Всем привет! Меня зовут Николай Шуляев, и это моя вторая статья на Хабре (первая – тут). В этот раз я хотел бы поднять достаточно важный для меня и отчасти провокационный вопрос: Так ли нужен WAF?

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

Как я собрал себе домашний «Эльбрус» и как было надо

Reading time6 min
Views18K
Всем привет и на этот раз с наступившим :-)

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

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



Краткий вариант моих «Приключений Робинзона Крузо»: в мае 2022 года принял решение и приступил к закупкам (материнская плата и кулер); за июнь-июль закрыл вопрос с памятью и параллельно доводил дистрибутив; к августу машинка в нулевом приближении заработала (но удавалось поймать нестабильную работу DDR4 именно на 3200) — а в сентябре после отпуска сложились завершающие кусочки: бутовщики довели прошивку в части таймингов и приехала SSD от GS Nanotech; оставалось свести всё воедино, поставить систему и перетащить ключики, что и было сделано.

Краткий вывод: занимайся своим делом, уделяя ему должное внимание; умел пять лет назад — может, умеешь и сейчас, но внимание понадобится вдвойне.

Ну а более полное изложение — на основании сентябрьских записок по свежим следам.
Читать дальше →
Total votes 94: ↑73 and ↓21+52
Comments214

Шифрование БД под управлением Firebird 3.0

Reading time13 min
Views10K
В современном информационном мире, информация играет значительную роль в жизни человека, общества и государства. Рост размера накапливаемых и обрабатываемых данных подымает вопросы об их хранении и обеспечении конфиденциальности. Уже существует немало технических решений и предложений для решения подобных задач. Среди них конечно же есть и системы управления базами данных (СУБД) которые поддерживают шифрование хранимых данных. Вот об одном из таких решений и пойдёт речь.

В апреле 2016 года вышла новая версия СУБД Firebird под номером 3. Из нововведений, среди прочего, появилось и немало механизмов защиты хранимых и передаваемых данных. Там есть и защита канала передачи данных, есть управление пользователями, а также есть шифрование самой БД, которое реализовано как прозрачное шифрование на уровне страниц данных. Реализуется это всё с помощью написания специальных расширений для Firebird. Можно конечно и самому разобраться и написать эти расширения, но почему бы не взять существующие. Тем более, что для написания, как минимум, нужно понимать в криптографии, иметь на вооружении знания какого-нибудь криптографического пакета и разобраться с новым С++ Firebird API.
Читать дальше →
Total votes 12: ↑11 and ↓1+10
Comments32

Information

Rating
Does not participate
Registered
Activity

Specialization

Chief Technology Officer (CTO), Software Architect
Lead
Git
SQL
C++
C++ STL
C
Software development
Visual Studio
.NET
Linux
C#