Pull to refresh
61
58

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

Send message

Лезем в сорцы компилятора — как работает goscheduler (Часть II)

Reading time16 min
Views8.3K

Чтение рекомендуется начать с первой части, в которой мы терзаем ОС нереальным количеством потоков, смотрим, что из этого вышло, и видим, что согласованность — это не обязательно многопоточность.
Читать дальше →

Старый фотик + bash = таймлапс

Reading time9 min
Views29K

Думаю у многих из нас, в шкафу пылился старый зеркальный фотоаппарат, типа Canon EOS 400D. Он как чемодан без ручки: выбросить жалко, продать смысла нет, и использовать вряд ли будешь. Достал его так одним вечером, и подумал: вещь хорошая и вполне годная для всяких опытов. И сразу загорелся применить его во всяких своих самоделках. А что, весьма хорошо фотографирует из коробки, достаточно широкий спектр всяких регулировок, осталось только научиться с ним работать. Всего-то подружить его с компьютером, да Linux, и дело в шляпе! В результате у нас получается просто непаханое поле для фотографических экспериментов и применения в своих придумках. Давайте же поглядим, как это можно сделать и что получилось из таких экспериментов.
Читать дальше →

Справедливость — главное неизвестное экономической теории (почему равенство имеет значение)

Reading time15 min
Views13K
Чувство справедливости — фундаментальный фактор экономических отношений. Традиционно экономическими понятиями считаются числа, формулы и узко рыночные термины. То есть, абстрактные категории — притом, что экономика как сфера отношений противоположна абстракции. Экономические отношения — это категория социальных отношений. Побуждения людей участвовать в экономических отношениях восходит к чувствам, их поведение регулируется на эмоциональном уровне.

Голые цифры, проценты, графики, суммы, что угодно сами по себе не имеют никакой ценности. Значение у любой чисто экономической информации — «хорошо» или «плохо», мотивация (жадность или расточительность, копить или тратить, рисковать или осторожничать, поделиться или отобрать, добавить денег сверху или минимизировать сумму насколько возможно) — появляется только в призме эмоциональной системы координат социальной обезьяны.

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

Greed is not good
Читать дальше →

Вакуумное напыление «на коленке»

Reading time12 min
Views36K

Вакуумное напыление (англ. physical vapor deposition, PVD; напыление конденсацией из паровой (газовой) фазы) — группа методов напыления покрытий (тонких плёнок) в вакууме, при которых покрытие получается путём прямой конденсации пара наносимого материала.

Различают следующие стадии вакуумного напыления:

  1. Создание газа (пара) из частиц, составляющих напыление.
  2. Транспорт пара к подложке.
  3. Конденсация пара на подложке и формирование покрытия.

К группе методов вакуумного напыления относятся перечисленные ниже технологии, а также реактивные варианты этих процессов.
Читать дальше →

Как сделать себе карьеру, помогая людям

Reading time21 min
Views6.8K
На прошлой неделе в наших соцсетях выступил Иван Роганов, специалист по разработке ПО и решению неординарных проблем, а также автор статей в нашем блоге.

Иван окончил Московский Государственный университет Экономики Статистики и Информатики в 2008 году по специальности Инженер-программист.

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

Делимся с вами расшифровкой эфира и записью.

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

Прокачиваем силу — Rust и Windows API

Reading time10 min
Views20K


Недавно я написал статью Трясём стариной — или как вспомнить Ассемблер, если ты его учил 20 лет назад. В статье рассказывается о том, как изучать ассемблер на примере игрушки 2048. Возможно для целей самой статьи игрушка была подходящая, но конечный результат меня немного удручил. Бинарник размером в 10 килобайт, который потребляет 2 мегабайта памяти, из-за неправильно слинкованной библиотеки резал глаза.

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

А почему бы не сделать на Rust, и правильно прикрученных библиотеках? При этом, если вы знаете, что делаете, то вы можете запросто уменьшить количество потребляемой оперативной памяти, но при этом написать визуальную игрушку с использованием Windows API.

Причём это не значит, что вы будете использовать какую-то нестандартную библиотеку. Встречайте — windows-rs, проект поддерживаемый Microsoft. Ваш билет в мир Windows, если вы пишете на Rust.
Читать дальше →

Бандлинг всего того, что не относится к обычному JavaScript-коду

Reading time8 min
Views5.9K
Предположим, вы работаете над веб-приложением. В таком случае весьма вероятно то, что вам приходится иметь дело не только с JavaScript-модулями, но и с самыми разными другими ресурсами. Это и веб-воркеры (их тоже пишут на JavaScript, но они обособлены от обычного кода фронтенда), и изображения, и стили, и шрифты, и WebAssembly-модули, и иные материалы, входящие в состав сайта.

Ссылки на некоторые из подобных ресурсов можно включить непосредственно в HTML-код, но часто они логически связаны с компонентами, используемыми во многих местах проектов. Например, таблица стилей для особого выпадающего списка связана с JavaScript-кодом, реализующим этот список, а изображения иконок связаны с компонентом, реализующим панель инструментов. Точно так же WebAssembly-модуль связан с JavaScript-кодом, обеспечивающим использование этого модуля. Удобнее было бы обращаться к подобным ресурсам прямо из соответствующих JavaScript-модулей и загружать их динамически тогда (или если), когда загружается соответствующий компонент.


Ресурсы разных типов, импортируемые в JS-коде

Правда, в большинстве крупных проектов используются системы для сборки таких проектов, которые выполняют дополнительные оптимизации и реорганизации контента. Например — это бандлинг и минификация ресурсов. Они не могут выполнять код и предсказывать то, каким будет результат его запуска. Они не могут и анализировать все строковые литералы в JavaScript-программах и делать предположения касательно того, является ли конкретная строка неким URL, ведущим к какому-то ресурсу, или нет. Как сделать так, чтобы бандлеры «видели» бы динамические ресурсы, загружаемые JavaScript-компонентами и включали бы их в сборку проекта?
Читать дальше →

Severed Steel: в поисках идеального экшена

Reading time7 min
Views7.8K

Игровую индустрию вот уже три десятилетия невозможно представить без кинематографичности. Пока одни разработчики делают игры ради игр, где геймплей просто работает (от “Марио” до “Цивилизации”), другие пытаются превратить свои произведения в интерактивное (или не очень) кино. Это направление можно разделить ещё на два: кто-то ограничивается роликами и катсценами с щедрой щепоткой QTE, а другие затачивают, “чтобы как в кино” сам геймплей. Max Payne, Call of Duty, FEAR — все они, так или иначе, отсылают нас к впечатлениям от любимых произведений кинематографа, или в случае с Devil May Cry, аниме (получается, это “анимеграфичность”?). Но как далеко можно зайти, если ваш источник вдохновения — лучшие экшен-сцены “Матрицы”?

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

Переход с iptables на nftables. Краткий справочник

Reading time18 min
Views172K
image

В Debian теперь нет iptables. Во всяком случае, по умолчанию.

Узнал я об этом, когда на Debian 11 ввёл команду iptables и получил “command not found”. Сильно удивился и стал читать документацию. Оказалось, теперь нужно использовать nftables.

Хорошие новости: одна утилита nft заменяет четыре прежних — iptables, ip6tables, ebtables и arptables.

Плохие новости: документация (man nft) содержит больше 3 тысяч строк.

Чтобы вам не пришлось всё это читать, я написал небольшое руководство по переходу с iptables на nftables. Точнее, краткое практическое пособие по основам nftables. Без углубления в теорию и сложные места. С примерами.
Читать дальше →

Интернет-бизнес больше не друг пользователя: как адаптироваться к реальности позолоченного века интернета

Reading time10 min
Views12K
Золотой и позолоченный век интернета. Золотой век интернета — когда новые сервисы постоянно росли в количестве и размерах, встречая пользователя, где он был, находя, угадывая и удовлетворяя его потребности, или даже создавая их, но чутко реагируя на обратную связь в процессе таким образом, что пользователь сам был рад обнаружить у себя новую потребность в том, что может предложить революционная эпоха появления персональных гаджетов и интернета — закончен. Ландшафт интернет-рынка полностью оформился, границы интернет-вселенной определены, и новые чудесные открытия в ней уже не происходят с той же регулярностью и быстротой, что в 2000–2010 годах. Начался позолоченный век — все возможности, открытые и созданные в золотой век, ещё здесь и продолжают радовать ту часть человечества, которой они доступны. Но отношения пользователей и бизнесов поменялись кардинально.

Развитие отношений интернет-бизнеса и пользователей чем-то напоминают сказку о золотой рыбке

Если в золотой век интернета бизнесы открывали для себя пользователей, искали и создавали для них потребности, которые они могли удовлетворить, в процессе окружая пользователей таким чутким вниманием, что казались им лучшими друзьями и, одновременно, безропотными и верными слугами, на которых достаточно лишь строго посмотреть — и они тут же, немедленно, не по принуждению, а из собственной охоты исправят user experience на более лучший, то в позолоченный век ситуация совершенно другая: бизнесы со всех сторон окружили пользователя своими возможностями, со всех сторон облепили их гаджетами, составили общую карту потребностей от рабочих до развлекательных — и предлагают удовлетворяющие их услуги под любое настроение для любой погоды 24/7 круглый год.
Читать дальше →

Разрезать металл — воздухом? Почему бы и нет…

Reading time7 min
Views23K

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

Коммуникатор судного дня «Armachat» LoRa

Reading time8 min
Views26K
Технология LoRa отлично подходит не только для сбора информации с удалённых датчиков. Её можно использовать как основу системы для обмена сообщениями. Именно такую систему я воплотил в жизнь в виде персонального коммуникатора Armachat. Для меня это самый настоящий учебный проект, на котором я оттачивал навыки создания печатных плат с беспроводными модулями и графическими дисплеями. Устройство питается от аккумулятора, оно представляет собой нечто вроде высокотехнологичной портативной рации, поддерживающей обмен текстовыми сообщениями. При этом для сборки этой рации нужно сравнительно мало компонентов — всего около 25.

Для этого проекта я, чтобы удобнее было выполнять паяльные работы, выбрал микроконтроллер SAMD21E18 в корпусе TQFP32 (того же размера, что и популярный контроллер ATmega328). Правда, к сожалению, этот микроконтроллер продаётся пустым. Для того чтобы прошить в него загрузчик, необходимо специальное устройство — Atmel-ICE. Прошивка загрузчика оказалась самой сложной частью проекта. А в остальном тому, кто решит воспроизвести мой проект, никаких специальных инструментов не понадобится. Всё, что нужно, собрано на плате коммуникатора. А на передней панели, что необязательно, можно разместить подсветку клавиатуры.

image

Сначала я назвал моё устройство «Armageddon communicator» (отсюда и его теперешнее название — «Armachat»), но я не думаю, что оно способно пережить какую-нибудь воображаемую всемирную катастрофу.
Читать дальше →

Апскейл, который смог

Reading time15 min
Views79K
Термин «апскейл» используется для обозначения процесса увеличения разрешения цифровых изображений с фокусом на создание иллюзии «настоящего» высокого разрешения. Правда, 90% таких продуктов — это барахло, больше намёк на перспективы, чем волшебство. Недавно мои ручки добрались до двух алгоритмов повышения чёткости, которые оказались настолько хороши, что появилась эта статья. Будут субъективные и объективные тесты алгоритма Real-ESRGAN для увеличения разрешения и алгоритма GFPGAN для детализации лиц.
Traffic_Warning: в статье демонстрируется множество примеров.
Читать дальше →

Принцип работы планировщика задач в Linux

Reading time5 min
Views33K

Планирование – это процесс распределения ресурсов системы для выполнения задач. В статье мы рассмотрим его вариант, в котором ресурсом является одно или несколько ядер процессора, а задачи представлены потоками или процессами, которые нужно выполнить.
Читать дальше →

Пишем драйвер виртуального EEPROM для STM32F030

Reading time15 min
Views14K

Кто хотел сохранять какие-либо данные в FLASH микроконтроллера во время работы устройства сталкивались с особенностями работы с этим видом памяти. Из-за необходимости стирания страницы большого объёма для перезаписи ячейки FLASH памяти, возникает угроза потери данных из-за отключения питания во время процесса обновления (один из вариантов). В этой статье я расскажу как можно упростить работу с FLASH, да и ещё с гарантией сохранения данных при прерывании процедуры обновления на любом этапе. Реализуем это на STM32F030.
Читать дальше →

Разгадываем ребус вторичных часов «Воронеж»

Reading time12 min
Views13K

В предыдущей статье я затеял создание контроллера вторичных часов «Воронеж», и даже добился некоторой работоспособности. Однако так и не разгадал окончательно ребус формы и длительности передаваемого сигнала. На ту публикацию откликнулось большое количество людей, и предложило свою помощь. Кто-то помогал советом, кто-то снял живые осциллограммы с различных первичных часов, кто просто помог добрым словом и оказал поддержку. В результате понял, что нельзя бросить это устройство в стадии недоделки, потому что за ним следит такое количество людей. Поэтому было принято волевое решение довести всё до конца, при этом с максимальным качеством, доступным в домашних условиях. Главный девиз этой разработки был:
Делай хорошо — плохо само получится.
В результате на вторую часть я потратил в полтора-два раза больше времени, чем на первую: причёсывал код, занимался механикой, чертил детали корпуса, печатал их на принтере, точил на токарном станке, а главное, страдал от перфекционизма. Как обычно бывает, механическая часть съела чуть ли не 40% всего времени. В общем, поехали, будет интересно: от идеи до законченного устройства.
Читать дальше →

База данных на SharedPreferences — Android Kotlin

Reading time7 min
Views19K
image

Для хранения большого количества информации в Android используется DataBase (SQLite, FireBase и т. п.), а для простого хранения настроек — SharedPreferences. Вопрос, можно ли использовать SharedPreferences как своего рода Базу Данных и как это сделать?
Статья написана об учебном проекте, повторять такое на проде нельзя, как минимум это небезопасно. Намеренно используется не самая лучшая реализация тех или иных вещей, чтобы можно было подискутировать в комментариях.
Читать дальше →

Как вообще Интернет приходит в ЦОД

Reading time4 min
Views19K
Пользователь VDS-хостинга задал нам вопрос о том, откуда берётся Интернет. И тут мы поняли, что это тот самый детский вопрос, на который не так-то просто нормально ответить.

Думаю, что 99 % людей ответят: берёт и приходит, а потом задумаются. Это настолько естественно и очевидно, что обычно просто не обсуждается. Ну там, знаете, оптика, она приходит в домик, в домике стоит коробка, а из коробки идёт медь. Вот примерно так оно и работает.

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

Для нас всё начинается вот с этой ракеты в Королёве:


Источник

Это памятник «Восток-2М» (8А292М), стоящий в Королёве примерно на том месте, где вообще был разработан «Восток». Перед ним находится люк, где одна трасса оптики разделяется на три к M9, или MSK-IX — московской международной телефонной станции № 9, где когда-то появился самый крупный узел обмена трафика. Сейчас это главное место, откуда Интернет поставляется в Москву. Из-за некоторых особенностей нашей территории бомбоубежища именно в этом люке под ракетой находится уязвимое место оптики, где все три канала идут вместе, и их легко перерубить экскаватором на протяжении примерно 120 метров. В других местах до и после ракеты такого нет.

Соответственно один луч идёт через наш ЦОД в Ивантеевку, поворачивает в Щёлково и заканчивается на M9-IX. Второй подземный ввод идёт через Ярославское шоссе, третий ввод — дополнительный, он скачет по столбам от коллектора до ЦОДа в одну сторону и до местного провайдера в другую, а провайдер уже врезается в кольцо оптики по городу и тоже попадает в девятку.
Читать дальше →

Вектор? Растр? А может — и то, и другое?

Reading time4 min
Views6.9K
На этой неделе я столкнулся с интересным классом задач, для решения которых, как я теперь понимаю, можно было использовать гораздо более удачный подход и раньше. Но существует ли такой подход?


Изображение для верхней части сайта

Речь идёт о подготовке изображения, рассчитанного на использовании в верхней правой части сайта jamstackconf.com. Мы, в маркетинговой команде Netlify, используем Figma. Первая моя попытка экспорта этого изображения для использования его на сайте оказалась далеко не самой удачной.
Читать дальше →

Арракис, который мы заслужили

Reading time4 min
Views51K

Во вселенной писателя-фантаста Фрэнка Герберта, Дюна, она же Арракис — это пустынная и маловодная планета с двумя лунами. По сюжету, она находится за пределами Солнечной системы, но если мы захотим поискать ближайшую схожую параллель, то больше всего подходит планета Марс. Предлагаю воспользоваться возможностями, которые даёт современная космонавтика, и совершить воображаемую прогулку на нашу Дюну.
Читать дальше →

Information

Rating
134-th
Location
Россия
Works in
Registered
Activity