Pull to refresh
113.7
Karma
182.7
Rating
K. just K. @F0iL

Разработчик

  • Followers 47
  • Following 5

Любопытные извращения из мира IT, или зачем мы JS в C++-код вкомпилили

Abnormal programming *JavaScript *Programming *C++ *Browsers

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

Мы занимались разработкой... скажем так, системы отображения интерактивного контента для рынка одной азиатской страны. Пользователь имел "умное устройство", например, ТВ-приставку или смарт-телевизор, а "интерактивный контент" представлял собой по сути дела html/js/css-приложение, которое прилетало на устройство с трансляции или из интернета и отображалось в прозрачном окне поверх видео. В качестве веб-движка использовался модифицированный Blink из гугловского Chrome.

И вот, в один прекрасный день после какого-то из обновлений, один наш партнер (читай "поставщик контента") обратился к нам с проблемой: что-то не работает.

Читать далее
Total votes 35: ↑35 and ↓0 +35
Views 9.2K
Comments 20

Как мы автоматизировали нефтедобычу, или немного о телемеханике

Industrial Programming *SCADA *Development of communication systems *Programming microcontrollers *Systems engineering

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

А расскажу-ка я сегодня вам немного про АСУТП. Вернее, не совсем. Когда говорят "АСУТП", на ум обычно приходят какие-нибудь производственные площадки, "серьезные" ПЛК типа Siemens или Allen-Bradley с алгоритмами на МЭКовских языках программирования, мнемосхемы в SCADA-системах по всем правилам ГОСТ, и огромные тома проектов под все это дело... Нет, сегодня речь пойдет не о том. Сегодня мы поговорим о "неправильном" АСУТП. А именно, о системах радиотелемеханики.

Читать далее
Total votes 28: ↑28 and ↓0 +28
Views 8.2K
Comments 44

Невыдуманные истории из телекома начала 2000-х

Information Security *System administration *Network technologies *History of IT Old hardware

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

Так вот, эти истории произошли в одном небольшом провинциальном городе в начале-середине 2000-х годов. Что такое ИТ и интернет в начале 2000-х в провинции? Домашний десктоп с Pentium 2 и 64 мегабайтами ОЗУ – весьма неплохая машина. Pentium 3 и 128 Мб – уже очень даже мощная. Основная ОС для домашнего пользователя – Windows 98, а те, кто посмелее и поподкованее используют прекрасную Windows 2000, которая в отличие от старой NT4 повернута к пользователю лицом, а не чем-то еще, а в отличие от линейки 95/98/ME не падает в синий экран от неудачного щелчка мышкой.

Читать далее
Total votes 120: ↑118 and ↓2 +116
Views 39K
Comments 143

Определение состояния Memory Pressure в Linux

System Programming **nix *Development for Linux *

Memory pressure -- это состояние, когда системе не хватает свободной памяти. Обычно его разделяют на moderate и critical. Moderate -- это когда памяти "мало, но пока еще жить можно", и дальнейшие выделения памяти могут вызвать проблемы с отзывчивостью из-за активной работы со swap-файлов или сбросов системных буферов и кэшей. Critical -- этап уже более серьезный, означающий "еще чуть-чуть, придет OOM-killer и начнет убивать процессы".

"Для чего нам это знать и контролировать?" -- на этот вопрос ответ будет в зависимости от того, что именно вы разрабатываете. Известный всем браузер Chromium (на котором основан Google Chrome), например, придерживается тактики "используем всю доступную память": если что-то можно забуферизовать и закэшировать в ОЗУ для ускорения работы, оно обязательно будет сделано. Зато при наступлении moderate memory pressure кэши и буферы очищаются, чтобы освободить пространство для работы других приложений, а при наступлении critical memory pressure браузер начинает выгружать фоновые вкладки, чтобы не допустить активации OOM-киллера.

Итак, поехали.
Total votes 32: ↑32 and ↓0 +32
Views 9.7K
Comments 12

Туннели и VPN, устойчивые к DPI

Information Security *Network technologies *
Мы живем в интересное время. Я бы даже сказал, в удивительное. По одну сторону мы видим неких лиц, которые очень хотят знать, о чем между собой разговаривают другие люди, и очень хотят указывать им, что можно читать, а что нельзя. С другой стороны граждане, которые хотят отстоять свои права тайны личной переписки и свободного получения информации, и не хотят, чтобы факты этой самой переписки и получения этой самой информации были использованы против них. Бонусом страдает огромное количество сторонних сайтов, сервисов и бизнесов, которых задевает «ковровыми блокировками».

Но нет, эта статья не об обществе, а о технологиях.

image
Читать дальше →
Total votes 104: ↑100 and ↓4 +96
Views 114K
Comments 172

WebAssembly и манипуляции DOM

Website development *JavaScript *C++ *Rust *WebAssembly *
Про WebAssembly в наше время слышали, я думаю, практически все. Если Вы не слышали, то на Хабре есть замечательный вводный материал об этой технологии.
image
Другое дело, что очень часто можно встретить комментарии вида “Ура, теперь будем писать фронтенд на C++!”, “Давайте перепишем React на Rust” и прочее, прочее, прочее…
Читать дальше →
Total votes 15: ↑15 and ↓0 +15
Views 15K
Comments 10

Information

Rating
13-th
Location
Ян де нова о-ва
Registered
Activity