Как стать автором
Обновить
2
0

Пользователь

Отправить сообщение

RSA шифрование через библиотеку OpenSSL в Delphi

Время на прочтение6 мин
Количество просмотров26K


По долгу службы в разработчиках повстречалась задача шифровать текстовые строки алгоритмом RSA, используя публичный и секретный ключи в PEM формате. При изучении данного вопроса выбор пал на использование библиотеки OpenSSL. Хочу поделиться примерами реализации функциональности шифрования на Delphi. Действия выполнялись в ОС Windows, среда разработки Borland Delphi 7.
Читать дальше →
Всего голосов 31: ↑18 и ↓13+5
Комментарии27

Pthreads: Потоки в русле POSIX

Время на прочтение10 мин
Количество просмотров162K

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



В этой статье мы познакомимся с POSIX Threads для того, чтобы затем узнать как это все работает в Linux. Не заходя в дебри синхронизации и сигналов, рассмотрим основные элементы Pthreads. Итак, под капотом потоки.

Читать дальше →
Всего голосов 28: ↑23 и ↓5+18
Комментарии28

Выделение подпроекта в отдельный репозиторий на github

Время на прочтение3 мин
Количество просмотров18K

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


Итак, что дано:


  • Есть большой репозиторий, содержащий множество папок. Каждая папка – это отдельный проект.

Что необходимо сделать:


  • Одну из папок перенести в отдельный репозиторий с сохранением ее истории коммитов.

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


Я использовал стандартный гитовый filter-branch. За основу я взял следующие статьи:



В этом посте я хочу немного адаптировать процесс для лучшего восприятия.

Читать дальше →
Всего голосов 39: ↑38 и ↓1+37
Комментарии25

Как определить местоположение по сетям сотовой связи (Cell ID)

Время на прочтение4 мин
Количество просмотров298K

Карта Участники OpenStreetMap
 
Существует множество способов определения местоположения, такие как спутниковая навигация (GPS), местоположение по беспроводным сетям WiFi и по сетям сотовой связи.
 
В данном посте мы попытались проверить, насколько хорошо работает технология определения местоположения по вышкам сотовой связи в городе Минске (при условии использования только открытых баз данных координат передатчиков GSM).
 
Принцип действия заключается в том, что сотовый телефон (или модуль сотовой связи) знает, каким приемопередатчиком базовой станции он обслуживается и имея базу данных координат передатчиков базовой станции можно приблизительно определить своё местоположение.
Читать дальше →
Всего голосов 90: ↑88 и ↓2+86
Комментарии37

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

Уровень сложностиПростой
Время на прочтение13 мин
Количество просмотров8K

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

Читать далее
Всего голосов 20: ↑19 и ↓1+26
Комментарии28

Как собрать LTE-модем на базе SDR

Уровень сложностиСложный
Время на прочтение17 мин
Количество просмотров20K
Приветствую всех!
Пожалуй, самой закрытой технологией в пользовательском сегменте является сотовая связь. Очень немногие знают о том, как на самом деле работают телефоны и модемы, отчего им часто приписывают всякие мифические свойства. Как насчёт попробовать запустить полностью открытую реализацию модема стандарта 4G? Именно этим я и предлагаю заняться.



Итак, в сегодняшней статье поговорим о том, как взаимодействовать с мобильной сетью при помощи SDR. Попутно узнаем, какой софт для этого существует, и соберём самый дорогой 4G-модем в истории.

Традиционно будет много интересного.
Читать дальше →
Всего голосов 96: ↑96 и ↓0+108
Комментарии23

Как запустить собственную GSM-сеть за пять минут при помощи SDR

Уровень сложностиСложный
Время на прочтение10 мин
Количество просмотров38K
Приветствую всех!

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



Итак, в сегодняшней статье поговорим о том, как быть владельцам SDR, желающим запустить свою GSM-сеть. Узнаем, какой софт нужен, чтобы заставить её работать в прямом смысле слова за пять минут. Попутно запустим GPRS и ненадолго побываем в 2007 году. Традиционно будет много интересного.
Читать дальше →
Всего голосов 107: ↑107 и ↓0+107
Комментарии98

Как правильно проектировать электронику

Время на прочтение15 мин
Количество просмотров26K

Все электронные гаджеты, окружающие нас, были кем-то придуманы, формализованы в электрической схеме. Для них были спроектированы печатные платы, заказаны и установлены комплектующие, и в итоге было собрано готовое изделие. Каждый из этих этапов может быть реализован совершенно по-разному: от “ручной” самодеятельности до полностью автоматизированного цифрового подхода. В этой статье в блоге ЛАНИТ мы расскажем и покажем все уровни и варианты создания электронных устройств и подробно опишем новейшие технологии в проектировании электроники.

Читать далее
Всего голосов 79: ↑74 и ↓5+88
Комментарии127

TrustZone: аппаратная реализация в ARMv7A

Время на прочтение13 мин
Количество просмотров15K
Сегодня начинаем исследовать внутреннее устройство TrustZone (это торговая марка компании ARM).

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

Поэтому я начну с того, что TrustZone — это никакое не «место» в процессоре. Ее нельзя найти на чипе, как кеш или АЛУ. И доверенные программы, на самом деле, не исполняются в какой-то физически выделенной зоне процессора.

Даже если мы посмотрели бы в исходные коды ядра ARM, то не смогли бы четко выделить TrustZone. Скорее, по аналогии с программами, TrustZone — это несколько модулей и набор патчей для почти всех остальных частей процессора.

В этой статье мы рассмотрим, как TrustZone реализуется на аппаратном уровне процессоров ARM Cortex-A (ARMv7A).
Читать дальше →
Всего голосов 24: ↑24 и ↓0+24
Комментарии2

Как мы создали приложение знакомств, чтобы находить «половинку» в 8 раз быстрее

Уровень сложностиПростой
Время на прочтение13 мин
Количество просмотров54K

Всем привет! Меня зовут Константин, и я основатель Radaro.

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

Читать далее
Всего голосов 53: ↑52 и ↓1+67
Комментарии425

Моя любимая задачка по программированию для кодинг-интервью

Время на прочтение10 мин
Количество просмотров71K

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

С годами я выработал вопрос по кодингу, который мне самому очень нравится. Это до жути простой и в то же время заковыристый вопрос. Решение занимает не более 30 строк кода, но зато даёт мне все нужные сигналы для вынесения верной оценки кандидату. Кроме того, мой вопрос отлично масштабируется и подходит как стажёрам, так и опытным инженерам. Здесь я не стремлюсь доказать, что мой вопрос лучше какого-то другого. Я лишь хочу объяснить, как он помогает мне как интервьюеру и на что я обращаю внимание на собеседовании по программированию.

В этой статье будут вещи, с которыми вы можете не согласиться. Это нормально. Это просто моё мнение, а так как я уже вышел на пенсию, то больше не представляю опасности ни для интервьюеров, ни для инженеров Google при принятии решений о найме! ;-)

Читать далее
Всего голосов 64: ↑50 и ↓14+49
Комментарии345

Вольтамперметр на базе ESP8266 с записью данных в лог и передачей их по сети Интернет

Уровень сложностиПростой
Время на прочтение2 мин
Количество просмотров23K

Сегодня мы с Вами соберём вольтамперметр на безе ESP8266, он оснащён модулями: INA226, модуль реального времени, цифровой датчик температуры, сенсорный экран, SD карта для сохранения логов, WI-FI модуль, контроллер для управления силовыми ключами.

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

На главной странице у нас отображаются данные: напряжение, сила тока, ватты, миллиампер в час, милливатт в час, текущая температура с цифрового датчика температуры и скорость вращения вентилятора.

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

Читать далее
Всего голосов 22: ↑21 и ↓1+25
Комментарии51

CH32V003 первый проект. Мигаем OLED дисплеем и делаем измеритель концентрации CO2

Уровень сложностиПростой
Время на прочтение15 мин
Количество просмотров20K

В последнее время разработчики электроники испытывают трудности с поставками электронных компонентов. Одним из решений данной проблемы является переход на "исконно китайскую" элементную базу. Это решение подкупает ценой и доступностью, но пугает плохой документацией и небольшим количеством информации на понятных нам языках. В данной публикации расскажу о любопытном микроконтроллере на ядре RISC-V и сделаю простое первое устройство - датчик концентрации углекислого газа в воздухе/мигалку OLED дисплеем и светодиодом (куда ж без мигалки светодиодом). В репозитории размещен проект для тех, кто захочет воспользоваться данными наработками.

Читать далее
Всего голосов 37: ↑37 и ↓0+37
Комментарии20

Дорогая техника для прослушивания Lossless Audio. Оно того стоит?

Уровень сложностиПростой
Время на прочтение6 мин
Количество просмотров15K

Вы слушаете почти всю свою музыку в «сжатом» формате (MP3 и AAC). Эти файлы экономят место, но опускают высококачественные детали оригинальных записей. Наверняка, вы задумывались, как найти несжатый звук (в форматах WAV и AIFF) и точное воспроизведение оригинальной студийной записи, а также встречали термин Lossless Audio или «аудио без потерь».

Хотя это ни в коем случае не новый термин, «Lossless» сравнительно недавно стал мейнстримом благодаря Apple, Amazon и Spotify, принявших его в своих последних аудиоаппаратных и программных продуктах и, понятное дело, рекламирующих его со всех своих платформ.

Аудио без потерь по-прежнему сжимает файлы, но использует специальный алгоритм, который может минимизировать размер ущерба для детализации. К типам файлов без потерь относятся FLAC (Free Lossless Audio Codec) и ALAC (Apple Lossless Audio Codec). Как говорят в Apple, Amazon и Spotify, у их Lossless Audio звук в исходном качестве. Что же это такое Lossless Audio и с чем его едят слушают? В чем разница между Lossless, Lossy и Hi-Res? какое оборудование сегодня есть для Lossless и сколько стоит? Обо всём этом подробно в этой статье.
Читать дальше →
Всего голосов 26: ↑17 и ↓9+12
Комментарии47

Личный путь и опыт в становлении Python разработчиком

Уровень сложностиПростой
Время на прочтение21 мин
Количество просмотров31K

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

Читать дальше →
Всего голосов 13: ↑10 и ↓3+10
Комментарии23

Почему молодежь не хочет рожать и причём тут система образования

Уровень сложностиПростой
Время на прочтение6 мин
Количество просмотров98K

"Я хочу пожить для себя" - говорят люди в 18, 20, 25 и даже 30 лет. И живут. Развивают карьеру, путешествуют, занимаются творчеством, уезжают покорять другие страны.

"Вы с ума посходили! А ну давайте срочно все рожайте!" - верещит государство, которому не хватает новых граждан.

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

Тут важно понять две вещи.

Какие?
Всего голосов 208: ↑125 и ↓83+73
Комментарии2354

Какой роутер для OpenWrt купить в 2025 году?

Уровень сложностиПростой
Время на прочтение21 мин
Количество просмотров118K

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

Роутер, как и любой другой девайс, нужно покупать под запрос. Например, линуксоиды привыкли покупать ноутбуки именно под Linux, а не первый попавшийся. Также и тут: если нужен OpenWrt, то роутер тоже надо выбирать с умом, а не надеяться на то, что кастомная прошивка сделает конфетку из роутера за 700 р.

В 2023 и 2024 появились интересные роутеры, которые уже поддерживаются проектом OpenWrt. Эти роутеры сделаны на базе ARM-процессоров. Такие роутеры появились у нескольких компаний, и дальше их количество будет только увеличиваться.

Читать далее
Всего голосов 245: ↑245 и ↓0+271
Комментарии248

Как я нажарил косточек и продал на маркетплейсах на 36 млн в год

Уровень сложностиПростой
Время на прочтение13 мин
Количество просмотров148K

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

Читать далее
Всего голосов 116: ↑85 и ↓31+68
Комментарии199

Структуры данных в картинках. HashMap

Время на прочтение6 мин
Количество просмотров1.2M
Приветствую вас, хабрачитатели!

Продолжаю попытки визуализировать структуры данных в Java. В предыдущих сериях мы уже ознакомились с ArrayList и LinkedList, сегодня же рассмотрим HashMap.



HashMap — основан на хэш-таблицах, реализует интерфейс Map (что подразумевает хранение данных в виде пар ключ/значение). Ключи и значения могут быть любых типов, в том числе и null. Данная реализация не дает гарантий относительно порядка элементов с течением времени. Разрешение коллизий осуществляется с помощью метода цепочек.

А почему бы и нет?
Всего голосов 81: ↑75 и ↓6+69
Комментарии42

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

Время на прочтение10 мин
Количество просмотров30K

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

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

В рамках реализации кольцевого буфера нам необходимо обработать случай, когда сообщение попадает на «разрыв» в очереди и должно быть перенесено (wrap around). Очевидная реализация записи в кольцевой буфер может полагаться на побайтовую запись и выглядеть примерно так:

Читать далее
Всего голосов 13: ↑12 и ↓1+13
Комментарии24
1
23 ...

Информация

В рейтинге
Не участвует
Зарегистрирован
Активность