Pull to refresh
7
0

42

Send message

Как мы уменьшили размер нашего Javascript монорепозитория в Git на 94%

Reading time5 min
Views8.2K

Это не кликбейт. Мы и правда сделали это! В Microsoft мы работаем с очень большим монорепозиторием, который между собой называем 1JS. Недавно мы достигли 1000 активных пользователей в месяц, около 2500 пакетов и ~20 млн строк кода! Последнее клонирование репозитория вернуло невероятные 178 ГБ.

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

Вопрос в том, как это вообще произошло?!

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

Как мы обошли bytenode и декомпилировали байткод Node.js (V8) в Ghidra

Reading time19 min
Views7.3K

«Да я роботов по приколу изобретаю!» Рик Санчес

Многим известно, что в 2019 году АНБ решило предоставить открытый доступ к своей утилите для дизассемблирования (реверс-инжиниринга) под названием Ghidra. Эта утилита стала популярной в среде исследователей благодаря высокой «всеядности». Данный материал открывает цикл статей, посвященных плагину ghidra_nodejs для Ghidra, разработанному нашей командой (https://github.com/PositiveTechnologies/ghidra_nodejs). Задача плагина — десериализовать содержимое jsc-файлов, дизассемблировать байткод функций и декомпилировать их. В первой статье мы обсудим сущности и байткод движка V8, а также тезисно опишем сам плагин, про который подробно расскажем в последующих статьях.

Рано или поздно все сталкиваются с программами на языке JavaScript, их так и называют скриптами. JavaScript — это полноценный язык со своим стандартом ECMA Script, скрипты которого выполняются не только в браузере, но и на сервере.

Скрипты исполняются с помощью специальной программы, которую называют движком (engine) JavaScript. За годы движкостроения их понапридумывали предостаточно: V8, SpiderMonkey, Chakra, Rhino, KJS, Nashorn и т. д.

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

Распределённые транзакции

Level of difficultyMedium
Reading time10 min
Views46K

На собеседованиях на позицию middle/senior разработчика часто задают вопросы по распределенным транзакциям в микросервисной архитектуре.

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

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

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

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

Ламповый дисплей для компьютера. Часть 1 — обзор концепций и постановка задачи

Reading time10 min
Views14K
Всем привет! Мне с большим трудом удалось побороть лень и начать писать новый цикл статей, но на этот раз не о лазерах. Дело в том, что лазеры – не единственный мой интерес, значительное место в списке интересов у меня занимает ламповая техника в её разнообразных проявлениях, и совершенно особый фетиш – советская ламповая радиолокационная аппаратура. Мне давно хотелось отвлечься от лазеров и создать что-то такое, что, как бы это ни звучало банально, не имеет аналогов. Потому вспомнил одну старую идею, очень долго лежавшую в «долгом ящике». И речь в статье пойдет о нестандартных устройствах отображения визуальной информации.
image

Читать дальше →
Total votes 57: ↑54 and ↓3+70
Comments22

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

Level of difficultyHard
Reading time10 min
Views38K
Приветствую всех!

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



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

У меня зазвонил Репка-фон. Делаем телефон на базе Repka Pi 3 с применением модуля SIM868

Level of difficultyEasy
Reading time15 min
Views8.6K

Делаем программно-управляемый телефон или даже узел связи на базе одноплатного компьютера Repka Pi и модуля платы функционального расширения для GSM связи.

Просто поражают возможности одноплатных компьютеров в формфакторе Raspberry за счёт применения с использованием их 40 pin разъёма, поддерживающего все наиболее популярные промышленные интерфейсы. Становится интересным пробовать решать разные задачи такого типа со ставшими доступными уже год назад Российскими одноплатниками Repka Pi, разработанными на основе китайской элементной базы, но разработанные и производимые уже в России и имеющие хорошую поддержку, что сильно меняет и расширяет возможности применения и получения ответов на возникающие вопросы, так как работы с такими задачами часто сопряжена с возникающими техническими вопросами.

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

Это четвертая статья серии, посвященной модулю GSM/GPRS/GNSS Bluetooth HAT. В этой статье рассмотрим как добавить в ваше IoT-устройство или другое оборудование функции мобильного телефона. Ранее мы рассматривали как принимать и отправлять сообщения и многое другое и вот настало время для реализации функционала полноценной телефонной голосовой связи.

Настало время превратить модуль GSM/GPRS/GNSS Bluetooth HAT, созданный на базе SIM868, в самый настоящий телефон, способный звонить и принимать звонки. Мы расскажем о том, как это можно делать из программы, составленной на языке Python, а также опишем соответствующие AT-команды. Вы проверите их в работе с помощью терминала minicom.

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

Читать далее
Total votes 32: ↑31 and ↓1+39
Comments55

Как заставить работать пейджер

Level of difficultyMedium
Reading time24 min
Views13K
Приветствую всех!

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

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



Итак, в сегодняшней статье поговорим о пейджерах и передаче сообщений на них. Разберёмся, как это вообще делается и какие сложности могут встретиться на нашем пути. Традиционно будет много интересного.
Читать дальше →
Total votes 58: ↑57 and ↓1+73
Comments55

Освобождение робота-пылесоса, который стал моим другом

Level of difficultyEasy
Reading time8 min
Views28K
Немного доп. оборудования, несколько команд Linux и вуаля! Пылесос свободен! Фото Cath Virginia / The Verge

В целом роботы-пылесосы мне нравятся. Для меня это эдакий небольшой друг, который чистит за меня пол. Просто фантастика. Но, к сожалению, есть одна проблема — я им не доверяю. Эти девайсы постоянно отправляют отчёты на серверы, что может представлять угрозу для безопасности и тайны личной жизни. Мне такое не по духу, и я подумал, что кто-то уже должен был хакнуть эту схему. После недолгих поисков в интернете я понял, что прав. Мне попался проект Valetudo, нацеленный на освобождение роботов-пылесосов от связи с облаком.
Читать дальше →
Total votes 85: ↑84 and ↓1+113
Comments44

Вас сдаст Гитхаб: деанонимизация пользователей SSH-серверов

Level of difficultyEasy
Reading time5 min
Views48K

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

Читать далее
Total votes 71: ↑67 and ↓4+79
Comments153

Простое CPU ядро на ПЛИС

Level of difficultyEasy
Reading time5 min
Views15K

Простое, нестандартное процессорное ядро с открытым кодом, которое может быть использовано для создания микроконтроллера в базисе ПЛИС, в том числе ПЛИС - ОП.

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

Shadowsocks-туннелирование корпоративного VPN

Level of difficultyEasy
Reading time8 min
Views59K

Если у вашей компании имеются серверы, работающие за границей, и доступ для внутренних пользователей вы предоставляете посредством VPN-протоколов (достаточно типовая схема, особенно после Covid — 2019, когда удалённая работа стала особенно популярной), то настало время действовать на опережение. Конечно, применение административного ресурса, возможно, защитит ваши интересы от тотальных проблем в будущем, но лучше подстраховаться, чем в один прекрасный день получить 100500 сообщений от систем мониторинга о недоступности опекаемых клиентов. Статья демонстрирует, как скрыть от противодействия со стороны систем глубокого анализа трафика сервисы компании, доступ к бизнес-процессам которых обеспечивается посредством VPN, используя для этого туннели shadowsocks.
Читать дальше →
Total votes 53: ↑53 and ↓0+53
Comments54

Офис на необитаемом острове — реальность

Reading time10 min
Views29K
Трудно вспомнить, когда и за какими напитками нам впервые пришла в голову мысль, что если все лето путешествовать не получается, и в перерыве между поездками все равно нужно работать, то нужно делать это в любимых нами Ладожских шхерах. Но в прошлом году мы это сделали — организовали на месяц коворкинг-офис на гранитном основании. И повторяем в этом году. По дороге мы приобрели некоторый опыт, который и хотим обобщить в этой статье. Мало ли, пригодится кому.

Офис-веранда
рассказ о том, как это сделать, и какие на этом пути встречаются трудности
Total votes 364: ↑353 and ↓11+342
Comments254

Внедрение в архитектуру советских программируемых калькуляторов «Электроника МК-52»

Reading time18 min
Views44K


В этой статье я хочу рассказать об архитектуре советских программируемых микрокалькуляторов на примере калькулятора «Электроника МК-52» и как можно внедриться в его архитектуру.

Советские калькуляторы семейства "Электроника Б3-34" («Электроника МК-56», «Электроника МК-61» и «Электроника МК-52») были особенно популярны в СССР. Причиной этому была не только доступная цена в 65 рублей за МК-54, 85 рублей за МК-61 или 115 рублей за МК-52, но и развитой язык программирования. Это семейство калькуляторов стало де-факто стандартным для многочисленных пользователей. Огромное количество книг было посвящено программированию на этих машинках и публикацией готовых алгоритмов. Электроника МК-52 даже летала в космос на корабле Союз ТМ-7, где предполагалось его использование в качестве резервного на случай неисправности спускаемого навигационного оборудования. Даже в военно-морском флоте СССР калькулятор «Электроника МК-52» с блоком расширения памяти БРП «Астро» какое-то время был стандартным средством для навигационных расчетов.


Читать дальше →
Total votes 115: ↑115 and ↓0+115
Comments180

Тестовый запуск системы видеонаблюдения Synology на 8 камер

Level of difficultyHard
Reading time4 min
Views17K

Речь пойдёт о системе записи с IP-камер Surveillance Station от Synology. Я сам уже много лет использую Synology, причём впервые познакомился с ней ещё до покупки оригинального железного сервера, установив через Xpenology фирменную операционную систему на обычный компьютер.

Xpenology является загрузчиком операционной системы от Synology, которая называется DSM (DiskStation Manager) и используется на  фирменных NAS Synology. DSM работает на пользовательской версии Linux, разработанной Synology.

Веб-приложение Surveillance Station - это система NVR (сетевой видеозаписи) для обеспечения безопасности с помощью мониторинга IP-камер. Это приложение кажется довольно удобной, хотя и проприетарной системой видеонаблюдения, которая работает прямо из коробки. По умолчанию возможно бесплатное подключение только двух камер.

Однако бразилец Фабио Белавенуто в июле 2022 выложил на гитхабе проект загрузчика Automated RedPill Loader (ARPL), который позволяет практически без использования командной строки создать загрузочную флешку и протестировать запуск Synology DSM 7.1 и Surveillance Station 9.0.1-7673 на 8 камер без какой либо дополнительной оплаты на обычном компьютере при эмуляции сетевого хранилища DVA1622.

Альтернативный загрузчик для Синолоджи?
Total votes 6: ↑5 and ↓1+5
Comments6

Слезаем с облачной иглы Aqara и подключаем устройства к контроллеру Wiren Board

Reading time9 min
Views58K

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

Я купил несколько устройств Aqara, которые помогут мне сделать несколько типичных сценариев умного дома. Сперва я подключу устройства к родному облаку Aqara: проверю удобство, создание сценариев и работу без интернета.

Затем я откажусь от облака Aqara и перейду на локальное решение Wiren Board 7 с модулем расширенияSprut.stick ZigBee WBE2R-R-ZIGBEE-SH, оболочкой Sprut.hub и Алисой. Сравню результат и процесс с родным облаком.

Читать далее
Total votes 18: ↑17 and ↓1+20
Comments34

Каким было автоматизированное рабочее место середины 90-х, и как его повторить на современном компьютере

Reading time14 min
Views22K

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

Я вам предлагаю совершить нечто подобное, разумеется, ненадолго, и если вам за 40, погрузиться в ностальгические воспоминания. А если вы не представляете, как же люди жили раньше без интернета, то узнать, как выглядело рабочее место программиста или студента в далёкие 90-е годы.

Я хочу, чтобы погружение было максимально приближено к реальности, и считаю, что различные эмуляторы и виртуальные машины очень удобны для изучения, разработки и отладки старого программного обеспечения, но для полного погружения лучше работать с программами без них, на реальном компьютере. Вы, к сожалению, уже не ощутите на себе мерцание и размытость монитора с ЭЛТ, не услышите стук дисковода для гибких дисков, громкое шуршание винчестера, но многие эмоции вы переживёте заново.
Читать дальше →
Total votes 70: ↑68 and ↓2+89
Comments233

Как получить 5 Тб дисков нахаляву

Reading time1 min
Views108K

Короткая заметка, написать которую меня натолкнуло появление этой статьи: "Неожиданная находка, которая освобождает 20 GB". Ха! Всего 20GB ? Есть универсальный способ освободить больше. На который я натолкнулся ~1,5 года назад.

Linux утилита mkfs.ext4 (ext2/ext3/ext4) имеет параметр -m, о котором мало кто знает. Я не знал. И никто из моих знакомых-линуксоидов не знал.

Этот параметр резервирует место, в процентах, доступное только суперпользователю. Чтобы, когда обычные юзеры выжрут весь диск, демоны продолжали оголтело писать свои логи, не падая. Значение по-умолчанию: 5. ПЯТЬ ПРОЦЕНТОВ! Что на диске в 10Тб даёт сумасшедшую цифру в 500 гигабайт. На логи, да! Наверное в начале-середине 90х такая процентовка имела смысл, но явно не сейчас. Особенно для дисков с данными, где никаких логов нет и не предвидится.

Мало того что производители дисков жонглируют гига- гиги- байтами, неизменно продавая обьём меньше интуитивно ожидаемого. Так ещё и "налог" сверху, в 5%, от утилиты форматирования!

Переформатировав свои 100тб дисков, я получил дополнительные 5Тб дискового пространства, просто так, на ровном месте.

Всем хороших выходных!

Читать далее
Total votes 122: ↑85 and ↓37+69
Comments243

Как позвонить всем вокруг

Reading time11 min
Views62K

Мы в Postuf большие поклонники франшизы Watch Dogs - приключенческой видеоигры, в которой главный герой в лице Эйдена Пирса, имея доступ к вымышленной системе ctOS, способен проворачивать со своего смартфона разные хакерские трюки. Однажды нам стало интересно, возможно ли в реальной жизни повторить трюк звонка на телефоны находящихся рядом людей.

Оказалось, возможно
Total votes 152: ↑151 and ↓1+176
Comments51

Настройка сетевого стека Linux для высоконагруженных систем

Reading time10 min
Views34K

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

О том как изменять параметры ядра, описываемые здесь, можно прочитать в статье Linux Kernel Tuning for High Performance Networking: Configuring Kernel Settings.

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

JavaScript: Стек вызовов и магия его размера

Reading time6 min
Views25K

Большинство разработчиков, которые использовали рекурсию для решения своих задач, видели такую ошибку:

RangeError: Maximum call stack size exceeded.

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

Большинство фронтэнд-разработчиков откроют для себя в этой статье что-то новенькое!

Читать далее
Total votes 16: ↑13 and ↓3+14
Comments40

Information

Rating
Does not participate
Registered
Activity