Search
Write a publication
Pull to refresh
14
-0.4

Инженегр АСУТП

Send message

Полезные скрипты для WinDBG: команда !exccandidates

Reading time4 min
Views1.8K

Некоторое время назад мы опубликовали в OpenSource небольшую библиотечку скриптов для популярного отладчика Windbg. Они предназначены для автоматизации ряда рутинных задач, возникающих при анализе причин падения программ как при отладке вживую, так и при работе с дампами памяти. Мы запланировали несколько постов, объясняющих, как эти скрипты использовать. Вот первый пост из данного цикла. Он демонстрирует использование команды !exccandidates на синтетическом примере.

Читать далее

Есть ли жизнь без WebGL 2.0?

Reading time11 min
Views10K

WebGL 2.0 вышел в далёком 2017ом году, принёс графический стек OpenGL ES 3.0 (2012го года), и, казалось бы, все современные браузеры давно должны были его поддерживать. Однако, среди лидеров затесались отстающие, и пользователи Safari до сих пор (начало 2021го) вынуждены ограничиваться возможностями WebGL 1.0, опубликованным в 2011ом году на основе OpenGL ES 2.0.

PBR освещение достаточно требовательно к вычислительным ресурсам графического процессора и обычно реализуется средствами WebGL 2.0. Возможно ли адаптировать PBR рендерер графического движка для работы в условиях ограничений WebGL 1.0 на iPad? В этой статье описывается опыт такой адаптации для графического движка открытого C++ фреймворка Open CASCADE Technology.

Читать далее

Винный гид России. Аналитика

Reading time11 min
Views16K

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

Надеюсь, моя статья будет интересна любителям вина. Особенно российского.

Месяц назад Роскачество презентовало очередной выпуск ежегодника "Винный гид России". Он посвящен (внезапно!) российским винам. Но не всем, а лишь находящимся в ценовом сегменте до ±1000 рублей и широко представленным в обычных продуктовых сетях. В общем, винные снобы могут сразу пройти мимо, речь пойдет о самом что ни на есть масс-маркете.

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

1. Какова картина в целом? Большинство вин откровенно плохи? Или наоборот прекрасны?

2. Не хочу запоминать и искать конкретные вина. Какие винодельни стабильно показывают достойное качество?

3. Как цена влияет на качество? Есть ли разница между вином за 150 рублей и за 500? А за 500 vs 1000?

Но раз есть сайт с данными, значит их можно спарсить и ответить на все свои вопросы самостоятельно.

Так что все те, кому интересен мир российского вина, и кто не воротит нос при фразе "вино дешевле 1000 за бутылку", добро пожаловать под кат!

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

Читать далее

WinUI 3 — Новая эра разработки под Windows

Reading time4 min
Views70K

В этой статье:

- WinUI 3 - это не просто новая версия библиотеки пользовательских компонентов. Это изменит разработку ПО под Windows и не только.
- Как менялась разработка графических интерфейсов?
- Эволюция системных API пошла не по плану....
- В чём провал Universal Windows Platform?
- Что такое .NET, и почему за ним будущее?

Читать далее

Напильник и щепотка фантазии… или как слепить Enterprise из SQL Server Express Edition

Reading time27 min
Views10K
Проснись… ты всегда ощущал, что мир не в порядке. Странная мысль, но ее не отогнать – она как заноза в мозгу. Ты всю жизнь живешь в темнице ограничений и правил, навязанных всесильным Майкрософтом, и даже не осознаешь этого.

Нажмешь дизлайк и сказке конец – ты закроешь вкладку и продолжишь бесцельно бродить по рекомендациям Хабра и YouTube.

Захочешь продолжить и войдешь в страну чудес – я покажу тебе насколько глубока… невозможная… кроличья нора успешной разработки на SQL Server Express Edition.

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

Система автоматического сброса с транспортёра на промышленном программируемом реле

Reading time5 min
Views3.8K

Имеется транспортёр, на котором установлен датчик дефектов и исполнительное устройство - сбрасыватель. По транспортёру движутся объекты, задача - производить сброс в случае обнаружения дефекта. Длина объекта от 1,5 до 7 метров, во избежание различных интересных эффектов сброс необходимо производить в момент прохождения центра объекта мимо сбрасывателя. Пройденное объектом расстояние измеряется при помощи датчика перемещения (инкрементального энкодера), наличие объекта определяется датчиком наличия (фотодатчиками). Обработав данные с этих датчиков, можно измерить длину объекта и вычислить необходимое перемещение до точки сброса.

Это история об использовании простого программируемого реле в реальной задаче промышленной автоматизации. Но такое ли оно простое? Добро пожаловать в программирование без единой строчки кода!

Читать далее

Ручное управление памятью в языке Go

Reading time12 min
Views13K
Привет, Хабр!

Наши читатели не могли не заметить нашего растущего интереса к языку Go. Наряду с книгой из предыдущего поста, у нас найдется на эту тему немало интересного. Сегодня мы хотим предложить вам перевод материала «для профи», в котором демонстрируются интересные аспекты ручного управления памятью на Go, а также одновременное выполнение операций над памятью на Go и C++.
Читать дальше →

Грубая оценка проблемности GitHub-проектов

Reading time4 min
Views4K

Здравствуйте, меня зовут Дмитрий Карловский и я… практикую терморектальную ароматерапию. Понимаю, что каждый любит своё болото, и будет защищать его до последней капли жижи. Тем не менее, высокая инженерная культура требует объективности в оценке инструментов.


Часто для решения одной и той же задачи существует более чем один подходящий по функциональности вариант. При прочих равных, хотелось бы выбрать такой проект, который доставит меньше всего проблем. Но как навскидку оценить объём этих проблем, не тратя несколько человеколет для собственноручного набивания всевозможных шишек?


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

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

Кросс-компилятор для Raspberry Pi4

Reading time6 min
Views10K

Хочу рассказать, как я собрал себе кросс-компилятор для Raspberry Pi4 с помощью crosstool-ng. Возможно кому-то тема покажется слишком примитивной и скучной. Я и сам поначалу думал, что быстро смогу собрать кросс-компилятор, но пришлось повозиться и изучать вопрос, некоторые нюансы были для меня неожиданны. Дальше расскажу что и как я делал.
Читать дальше →

Публикация Go приложения в GitHub

Reading time7 min
Views9.8K

Пост представляет собой небольшой контрольный список (checklist) при публикации Go приложения на Github'е.

TLDR:

- Makefile как входная точка для выполнения основных действий

- Линтеры и тесты как инструменты повышающие качество кода

- Dockerfile как способ распространения приложения

- Github Actions как возможность автоматической сборки и выкладки приложения при новых изменениях

- Goreleaser как инструмент для публикации релизов и пакетов

Результатом должно быть опубликованное приложение с настроенными инструментами которые позволяют легко сопровождать приложение в процессе его существования. В качестве реализации я буду рассматривать примеры на основе утилиты pgcenter.

Вперед!

Что не так с WebAssembly?

Reading time7 min
Views25K
Современные браузеры могут намного больше, чем рендеринг веб-страниц. Это стало одной из причин появления WebAssembly. Эта технология создана в попытке вывести скорость решения сложных задач на новый уровень, построить мост между JavaScript и машинным кодом.

WebAssembly, в теории, может позволить кому угодно писать низкоуровневый код, выполняющийся в браузере, в безопасном виртуальном окружении. И, что ещё интереснее, технология WASM (сокращение от WebAssembly) была спроектирована как цель компиляции для других языков, позволяя коду, который обычно выполняют в серверной среде (например — коду, написанному на C или на C++), компилироваться в соответствующий формат и выполняться в браузере.



У WASM был огромный потенциал и невероятные перспективы. Что же пошло не так? Почему WASM, через 3 года после релиза, ещё не используется в каждом веб-проекте? Есть ли у WASM будущее в веб-разработке? Поищем ответы на эти вопросы.
Читать дальше →

Новый высокопроизводительный одноплатный компьютер BeagleV построенный на открытой архитектуре RISC-V за $119+

Reading time3 min
Views22K
BeagleV SBC

До недавнего времени платы построенные на процессоре RISC-V такие как Kendryte K210, невозможно было использовать для высоко ресурсоемких задач, т.к. производительность конечных была очень низкой. В частности одноплатный компьютер XuanTie C906 на базе Allwinner RISC-V можно было использовать только для нишевых небольших задач, например в качестве камеры из-за отсутствия аппаратного графического ускорителя и наличия только 256 МБ оперативной памяти. Можно использовать одноплатные компьютеры такие как SiFive HiFive Unmatched или PolarBerry, но стоимость конечной системы составит сотни, а то и более тысячи долларов, что является весьма дороговато.
Читать дальше →

Автоматическая виртуализация рендеринга произвольной вёрстки

Reading time29 min
Views26K

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

Лонгрид

Intel о топовом процессоре Core i9-11900K: быстрее Ryzen 9 5900X, выйдет уже в этом квартале

Reading time2 min
Views16K

Компания Intel решила ускорить процесс вывода своего нового процессора Core i9-11900K на рынок. Теперь уже официально известно, что чип поступит в продажу в ближайшие пару месяцев. Компания на CES 2021 представила целое семейство Rocket Lake-S, но больше всего внимания уделила старшему представителю того семейства.

Немудрено — ведь это действительно топовый на данный момент чип. Ориентирован он, в первую очередь, на геймеров и пользователей, которым нужны высокопроизводительные системы. По словам представителей Intel, процессоры дают прирост IPC (числа исполняемых за такт инструкций) на 19% по сравнению с Comet Lake.
Читать дальше →

Микрохирургия ELF'а или «А что, так можно было?!»

Level of difficultyMedium
Reading time17 min
Views7.4K

Разбираемся в устройстве PE и рождественских ELF'ов, реверс-инжинирим runtime-библиотеку, портируем ассемблерный код, собираем и редактируем исполняемые файлы и периодически спрашиваем себя "А так можно было?".

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

Но обо всём по порядку

Утраченный потенциал подсистемы Windows для Linux (WSL)

Reading time6 min
Views57K


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

Наконец-то у нас появилась возможность запустить свой инструментарий Linux на Windows наравне с виндовыми программами. А это значит, что больше не нужно изучать странный PowerShell или пользоваться архаичной консолью CMD.EXE.

К сожалению, не всё так радужно. WSL по-прежнему является неким инородным элементом, который отделён от родной среды Windows. В частности, не может взаимодействовать с «родными» инструментами Windows.

О реализации ввода-вывода с именами

Reading time11 min
Views2.2K

Как-то на одном из компьютерных форумов участники делились соображениями, чего им не хватает в языках, так сказать, в повседневной деятельности. Один заявил, что ему очень не хватает оператора типа put data. Для тех, кто не слышал о таком, поясню, что в языке PL/1 был предусмотрен оператор вывода (или ввода) значений переменных вместе с их именами, т.е. вместе с идентификаторами.

Например, если обычный вывод put list(X,Y); давал что-нибудь вроде:

1280    1024

то оператор put data(X,Y); печатал:

X=   1280  Y=   1024

не заставляя писать для этого вывод в виде оператора:

put list(’X=’,X,’Y=’,Y);

Чаще всего это использовалось в отладочных целях, но не обязательно. Например, используя вывод в текстовый файл с помощью put data, а затем ввод этих же данных как исходных в другой программе с помощью «зеркального» оператора get data можно было получить удобную для чтения и редактирования форму представления исходных данных в текстовом виде.

Можно возразить, что современные «оболочки» систем программирования легко позволяют вывести значения (и имена) любых объектов программы в интерактивном режиме безо всяких put data и поэтому в нем больше нет необходимости.

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

Читать далее

Information

Rating
Does not participate
Location
Россия
Registered
Activity