Search
Write a publication
Pull to refresh
3
0
Send message

Обсуждение бесплатной лицензии PVS-Studio для проектов, размещённых на GitHub

Reading time3 min
Views8.2K
Бесплатный PVS-Studio для всех, кто развивает открытые проекты на GitHub?

Предлагаю вниманию прототип статьи под названием «Бесплатный PVS-Studio для всех, кто развивает открытые проекты на GitHub». Прошу подойти к данной теме конструктивно и высказывать предложения и критику по делу. Интересно мнение, насколько предложенный вариант разумен и удобен? Что можно улучшить? Какие дополнительные ограничения можно добавить? Кто бы из вас воспользовался/не воспользовался и почему?

Ещё раз подчеркну, что статья является пробной и имеет своей целью организовать дискуссию. Если Вы наткнулись на этот пост в 2019 году, то просим перейти к новой версии статьи.
Читать дальше →

Байт-машина для форта (и не только) по-индейски

Reading time27 min
Views15K
image

Да-да, именно «байт» и именно по индейски (не по индийски). Начну по порядку. В последнее время тут, на Хабре, стали появляться статьи о байт-коде. А когда-то давным-давно я развлекался тем, что писал форт-системы. Конечно, на ассемблере. Они были 16-ти разрядными. На x86-64 никогда не программировал. Даже с 32 поиграться не удалось. Вот и пришла такая мысль — а почему бы нет? Почему бы не замутить 64х разрядный форт, да ещё с байт-кодом? Да еще и на Linux, где я тоже ничего системного не писал.

У меня есть домашний сервер с Linux. В общем, я немного погуглил и узнал, что ассемблер на Linux называется GAS, а команда as. Подключаюсь по SSH к серверу, набираю as — есть! Он у меня уже установлен. Ещё нужен компоновщик, набираю ld — есть! Вот так, и попробуем написать что-нибудь интересное на ассемблере. Без цивилизации, только лес, как у настоящих индейцев :) Без среды разработки, только командная строка и Midnight Commander. Редактор будет Nano, который висит у меня на F4 в mc. Как там поет группа «Ноль»? Настоящему индейцу нужно только одного… Что еще нужно настоящему индейцу? Конечно, отладчик. Набираем gdb — есть! Ну что же, нажмем Shift+F4, и вперед!
Читать дальше →

Как мы делали книжный сканер для судов

Reading time3 min
Views21K


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

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

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

С тех пор поменялись две вещи:
— Подходы к конструированию электроники.
— Подходы к машинному зрению.

Как работает диспетчер

Reading time9 min
Views40K

Музейная реконструкция рабочего места авиационного диспетчера

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

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

Углекислый газ на МКС

Reading time13 min
Views61K
В октябре на МКС была установлена новая (принципиально) система регенерации воздуха, которая повысит замкнутость воздушного цикла вдвое.

Реактор Сабатье, вид сверху и снизу

Однако если с технологическим прогрессом все будет хорошо, то этот вариант просуществует недолго, — и нас ждет откат к системе предыдущего типа. А вот если прогресс будет буксовать, то новая система станет золотым стандартом на десятилетия.
Почему все так перепуталось?

Полёт свиньи, или Оптимизация интерпретаторов байт-кода

Reading time13 min
Views20K


"No matter how hard you try, you can't make a racehorse out of a pig. You can, however, make a faster pig" (комментарий в исходном коде Емакса)

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


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

Читать дальше →

Как экипаж самолёта готовится к вылету

Reading time7 min
Views77K


Мы просыпаемся, умываемся, чистим зубы, делаем зарядку, завтракаем и начинаем готовиться к полёту. В крупных авиакомпаниях у пилотов есть специальные планшеты, и туда приходит информация о предстоящем рейсе. То есть ещё дома за завтраком я знаю маршрут, данные по аэродрому вылета, прилёта и всем запасным, погоду везде по маршруту фактическую и прогнозы на время пролёта. Обычно сразу есть все нужные расчёты, чтобы мы могли с ними ознакомиться, возможно, что-то подкорректировать или высказать просьбу. Что-то вроде «добавьте топлива, возьму ещё один запасной по причине плохой погоды».

Эти данные приходят от авиакомпании. Авиакомпания имеет договор со специальными фирмами, специализирующимися на навигации, которые полностью рассчитывают маршрут. Получается 10–15 листов А4 на английском языке (некоторые компании имеют только электронный план полёта, так сказать, минимизируют бумажный документооборот) на маршрут из Москвы в Екатеринбург. Могут посчитать и из Москвы в Гонолулу, у них одинаково софт отработает. Потом рядом отдельно — пакет информации по аэродромам: спецификация по оборудованию, радиотехнические данные, ремонты полос, рулёжных дорожек и т. п. Если известен конкретный борт, то мы уже имеем основной объём информации, какой самолёт, все его особенности отмечены.

В СССР могли сразу дать решение вроде: «Погода нелётная». Сейчас решение всегда — за командиром, и он опирается на прогнозы и фактическую погоду, может требовать залить больше топлива и так далее.

Потом мы едем на работу.
Читать дальше →

Уходя — уходи? Ночной разговор об увольнениях

Reading time6 min
Views121K
Нашло. Нет, накатило. 7 мест работы, 7 перемен, и ещё неизвестно, что впереди — увы, в мире корпораций нет такого, чтобы раз — и навсегда, одна запись в трудовой, одна любовь и полностью отданные душа и ум. Сейчас всё круто и завтра утром я с радостью выйду в офис, но who knows, who knows, не всё зависит от нас с вами. Так вот, увольнения бывают разные: плохие, хорошие, вынужденные, скандальные. А давайте обсудим, как оно бывает, как уйти красиво или не уйти вовсе.


Читать дальше →

Работа со строками на этапе компиляции в современном C++

Reading time20 min
Views33K


Если вы программируете на C++, то наверняка задавались вопросом почему нельзя сравнить два строковых литерала или выполнить их конкатенацию:


auto str = "hello" + "world"; // ошибка компиляции

if ("hello" < "world") { // компилируется, но работает не так, как ожидалось
    // ...
}

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

Читать дальше →

Про выезд в туры

Reading time7 min
Views26K


Один из самых хороших примеров, чем интересны туры, — это Доминикана. Два месяца назад недельный выезд на двоих стоил так: билеты — 230 тысяч рублей, а отель — 64 тысячи рублей. Если же покупать всё это в виде тура, то итоговая стоимость получалась 114 тысяч рублей. Треть от цены самостоятельной поездки. Главная причина — в том, что туда не было прямого рейса. Туроператор собирал достаточное количество туристов для чартера, нанимал самолёт — и всё получалось выгоднее. Сейчас прямой рейс появился, и если смотреть даты 20–27 ноября, то отель стоит 41 тысячу, билет — 118 тысяч, а тур — 121 тысячу. Разница всё равно есть.

Откуда ещё она может браться? Сейчас расскажу, как это устроено.
Читать дальше →

TrustZone: доверенная ОС и ее приложения

Reading time10 min
Views8.2K
В прошлых статьях мы рассматривали аппаратное устройство TrustZone и работу механизма Secure Monitor. Сегодня речь пойдет о доверенной ОС (TEE) и ее приложениях. И если прошлый раз были довольно низкоуровневые вещи, сейчас все будет на вполне высоком уровне — на уровне операционной системы.
Читать дальше →

Зацените: сделал стол

Reading time6 min
Views152K


TL;DR В статье описывается мой опыт постройки стола c нуля из фанеры. От проектирования до сборки.

Я очень долго страдал от плохих столов. Все они неудобные, плохого качества, маленькие и, самое главное, ШАТКИЕ. Более-менее приличные столы стоили тысячи долларов. В итоге я решил изготовить стол самостоятельно.

Основные требования к столу:

  • Устойчивость! Предметы на столе не должны трястись, если резко положить руки на стол или оттолкнуться от него. Мой стол весит ~120кг. С его края можно делать сальтухи, при этом на другом конце паять SMD компоненты.
  • Ширина и глубина столешницы. Столы шириной 60 см — это унижение. Мне нужно иметь запас по глубине, чтобы можно было отодвинуть ноутбук вперед, и при этом получить достаточное рабочее пространство.
  • Вместительность. Мне нужны полки, чтобы разместить там оборудование: паяльники, лабораторный блок питания, осциллограф, аудио усилитель и т.д. При этом полки должны быть так же устойчивы, как и стол.
  • Цена. Я не готов выложить за стол несколько тысяч долларов. Мой стол обошелся в ~$300 с учётом покупки всего инструмента для сборки и покраски.

Эволюция вагона железной дороги

Reading time8 min
Views76K
Почему окно в новом вагоне ниже полки? Зачем сделали открывающуюся форточку? Куда дели старые добрые рундуки под нижней полкой? Почему вместо двух замков для ремней на верхней полке — какая-то гнутая железяка?



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

Наш тверской двухэтажный пассажирский вагон 61-4492 отечественной разработки стал призёром международного конкурса промышленного и графического дизайна Good Design Awards (США, Чикаго) в категории «Транспорт». В профессиональной среде это одна из самых престижных наград.

Но начну с ответа, почему рундук на вагонах нового поколения теперь без стенки.
Читать дальше →

Считываем данные со старого жёсткого диска MiniScribe

Reading time3 min
Views16K


Перевод статьи с сайта программиста и любителя старого железа Майкла Сломковски

Ко мне в руки попал старый MFM-диск, MiniScribe 2012, вместе с контроллером. MFM – это модифицированная частотная модуляция, и эту технологию часто ассоциируют с громоздкими жёсткими дисками из эры до IDE/Parallel ATA. Древние данные, хранящиеся на диске (в основном, документы MS Word 4.0) обладали определённой сентиментальной ценностью для предыдущего владельца, поэтому я решил их извлечь.

Жёсткий диск MiniScribe 2012


Жёсткий диск — MiniScribe 2012 MFM, произведён, вероятно, в 1984-м. Он стоял в IBM XT-совместимом компьютере. Этот монстр занимает два слота по 5.25" и весит более двух килограмм. Как указано в инструкции, объём его просто поражает воображение – целых десять мегабайт. Коннектор питания – стандартный Molex. Диск подключается к карточке контроллера двумя кабелями.
Читать дальше →

Тесное знакомство с электромеханическим сортировщиком перфокарт (экскурс в начало XX века)

Reading time3 min
Views7.7K

Поняв, как работать с электромеханическим сортировщиком перфокарт (с точки зрения обычного пользователя), и приступая к более тесному знакомству с ним (с точки зрения инженера), – ожидаешь увидеть в нём несколько датчиков для считывания отверстий в перфокартах и с десяток манипуляторов, каждый из которых забирает перфокарту в свой карман. Однако электромеханика сортировщика намного более элегантна и проста: весь его интеллект держится на одном датчике и на одном электромагните. Как именно, читайте ниже.


Как работает вокзал

Reading time12 min
Views64K


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

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

Ядра процессора или что такое SMP и с чем его едят

Reading time11 min
Views32K

Введение


Доброго времени суток, сегодня хотелось бы затронуть достаточно простую тему, которая почти никем из обычных программистов неизвестна, но каждый из вас, скорее всего, ей пользовался.
Речь пойдет о симметричной мультипроцессорности(в народе — SMP) — архитектура, которая встречается во всех многозадачных операционных системах, и конечно же, является неотъемлемой их частью. Каждый знает, что чем больше ядер у процессора — тем мощнее будет процессор, да, это так, но как ОС может использовать несколько ядер одновременно? Некоторые программисты не спускаются до такого уровня абстракции — им это попросту не надо, но думаю, всем будет интересно то, как же SMP работает.
Читать дальше →

Ликбез по работе с перфокартами (или история о том, как с 1890-го по 1970-й «большие данные» обрабатывались)

Reading time5 min
Views48K

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


Как люди работали с перфокартами? Какому алгоритму следовал электромеханический сортировщик перфокарт? Как осуществлялась сортировка по числовым полям данных? А по строковым? Обо всём этом – ниже.


Как написать на ассемблере программу с перекрываемыми инструкциями (ещё одна техника обфускации байт-кода)

Reading time9 min
Views18K

Представляем вашему вниманию технику создания ассемблерных программ с перекрываемыми инструкциями, – для защиты скомпилированного байт-кода от дизассемблирования. Эта техника способна противостоять как статическому, так и динамическому анализу байт-кода. Идея состоит в том, чтобы подобрать такой поток байтов, при дизассимблировании которого начиная с двух разных смещений – получались две разные цепочки инструкций, то есть два разных пути выполнения программы. Мы для этого берём многобайтовые ассемблерные инструкции, и прячем защищаемый код в изменяемых частях байт-кода этих инструкций. С целью обмануть дизассемблер, пустив его по ложному следу (по маскирующей цепочке инструкций), и уберечь от его взора скрытую цепочку инструкций.


Читать дальше →

Ликбез по химии: кислотный реверсинг микросхем (как обнажить кристалл микросхемы для последующего его фотографирования)

Reading time7 min
Views28K

Введение


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


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


Кислоту в воду или воду в кислоту?

Читать дальше →

Information

Rating
Does not participate
Registered
Activity