Pull to refresh
508
315.4

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

Send message

Делаем кондиционер умным с помощью Elixir и Nerves

Level of difficultyMedium
Reading time7 min
Views4.8K

С каждым днём всё ближе обжигающее японское лето, поэтому я всё больше думал о своей давней идее: дистанционном управлении кондиционером воздуха в моей спальне через Интернет. Простым нажатием кнопки за десять минут до отправления ко сну я мог бы включить кондиционер, который бы превращал спальню в прохладный комфортный оазис к тому моменту, как я почищу зубы и поднимусь на второй этаж. В прошлом году это так и осталось идеей; в этом году я довёл её до реализации.
Читать дальше →
Total votes 26: ↑26 and ↓0+39
Comments28

Загадочное дело о пропавшей точке

Level of difficultyEasy
Reading time6 min
Views17K

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

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

В компании на тот момент было множество шаблонов с устаревшими версиями. В некоторых шаблонах использовались устаревшие условия договоров, в других — старый логотип компании или неправильный шрифт и так далее. Системой стало невозможно управлять, и клиент попросил нас найти решение.
Читать дальше →
Total votes 78: ↑76 and ↓2+96
Comments32

Сравнение алгоритмов ограничения частоты запросов

Level of difficultyMedium
Reading time7 min
Views5.6K

▍ Зачем ограничивать частоту?


Представьте чат в Twitch со множеством активных пользователей и одним спамером. Без ограничения частоты сообщений единственный спамер может запросто заполнить всю беседу сообщениями. При ограничении частоты у каждого пользователя появляется равная возможность участия.

Видео


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

Конечные точки API тоже часто ограничивают по частоте запросов, чтобы их ресурсы не монополизировал единственный пользователь. Представьте, что вам нужно, чтобы пользователи могли обращаться к затратной конечной точке не чаще ста раз в минуту. Это можно отслеживать при помощи счётчика, обнуляющегося каждую минуту. Все запросы после сотого в пределах этой минуты будут блокироваться. Это один из простейших алгоритмов ограничения частоты, называющийся fixed window limiter (ограничитель с фиксированным окном). Это распространённый способ управления трафиком к сервису.

Но не всегда всё так просто.

Когда начинается и заканчивается каждое одноминутное окно? Если я запущу поток запросов ближе к концу окна, смогу ли превысить лимит? Ёмкость окна восстанавливается по одному запросу за раз, или сразу на всё количество?

В этом посте мы рассмотрим три самых популярных алгоритма, чтобы ответить на каждый из этих вопросов.
Читать дальше →
Total votes 34: ↑34 and ↓0+53
Comments4

Чипы на киловатт изменили теплоотвод

Level of difficultyEasy
Reading time6 min
Views10K

Производительность чипов растёт экспоненциально по закону Мура и не думает останавливаться. Но вместе с ней растёт и энергопотребление, и тепловыделение микросхем. В 2023 году с появлением суперчипов GH200 (на КДПВ) ускорители перешли киловаттный диапазон. И это очень большая проблема. Инженерам приходится принимать неординарные решения по теплоотводу.
Читать дальше →
Total votes 26: ↑23 and ↓3+36
Comments62

Compiler Explorer — уникальный проект для исследования компилируемого кода

Level of difficultyMedium
Reading time7 min
Views11K
Этот пост посвящён замечательному инструменту, полезному для каждого, кто интересуется компиляторами или архитектурой компьютеров. Это Compiler Explorer, который я в дальнейшем будут называть CE.

CE — потрясающий инструмент. Если вы с ним не знакомы, то прервите чтение и перейдите на веб-сайт CE, где вы увидите примерно такой экран:

Предупреждение: вы забираетесь в «кроличью нору», на которую можете потратить несколько часов своего времени.


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

CE поддерживает 69 языков, более двух тысяч компиляторов и широкий спектр архитектур, включая x86, arm, risc-v, avr, mips, vax, tensa, 68k, PowerPC, SPARC и даже древний 6502.

То есть теперь для просмотра результата работы компилятора достаточно открыть godbolt.org и скопировать туда блок кода.

Это само по себе удивительно, но у CE есть гораздо больше возможностей. Это инструмент, который должны знать все интересующиеся компиляторами и архитектурами компьютеров. В статье мы сможем лишь поверхностно рассмотреть функции CE. Вам стоит самим перейти на сайт CE и попробовать всё самостоятельно.
Читать дальше →
Total votes 61: ↑59 and ↓2+75
Comments13

Как сделать виртуальную АТС на базе VPS

Level of difficultyEasy
Reading time6 min
Views8.5K


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

В каждом офисе установлена мини-АТС, которая коммутирует внутренние звонки. Телефоны сотрудников подключаются к коммуникационному шкафу или коробочке с Asterisk (как на КДПВ), а она подключена к телефонной сети общего пользования (PSTN или ТСОП). Таким образом, сотню офисных телефонов можно повесить на один внешний номер. В общем, мини-АТС — совершенно необходимая вещь.

Виртуальная или облачная АТС (hosted PBX) — это услуга для компаний, которая заменяет им обычную офисную АТС. Вместо того, чтобы покупать специализированное телекоммуникационное оборудование или выделять отдельный компьютер с Asterisk, они заказывают услугу на удалённом хостинге. И этот компьютер с Asterisk (IP-АТС) физически размещается у провайдера. Таким образом, виртуализация добралась и до АТС, всё в русле современных тенденций.
Читать дальше →
Total votes 23: ↑21 and ↓2+30
Comments45

Почему люди до сих пор не отказались от дискет

Level of difficultyEasy
Reading time9 min
Views15K
Музыкант Эспен Крафт хранит свои звуковые сэмплы на гибких дисках и использует их для создания музыки из-за их аутентичного звука

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

Когда в голову Эспена Крафта приходит идея нового музыкального произведения, он открывает одну из своих многочисленных коробок с дискетами. Открыв коробку, этот ютубер из Норвегии пробегает глазами по рядам разноцветных пластмассовых квадратов.

На одной из этикеток написано «Басовый звук Moog». Именно то, что нужно Крафту. Он достаёт диск и засовывает его в синтезатор. Машина подтверждает наличие диска приятным шумом. По словам Крафта, после этого начинается магия.

Сэмпл почти готов к воспроизведению, но именно предвкушение зарождает ностальгию Крафта по «тёплому и уютному месту». Идея уже висит в воздухе. Он нажимает на клавишу. Уши наполняются звуком.

Если вы помните времена, когда пользование гибкими дисками не казалось чем-то странным, то вам, вероятно, не меньше тридцати лет. Гибкие диски, или дискеты, появились примерно в 1970 году, и около трёх десятков лет были основным способом хранения и резервного копирования компьютерных данных. Всё приобретаемое людьми ПО и программы загружались на пачки таких дисков. Это технология из другой компьютерной эпохи, но по разным причинам дискеты по-прежнему привлекательны для некоторых людей, а значит, ещё не умерли.
Читать дальше →
Total votes 41: ↑36 and ↓5+52
Comments88

Собираем балансирующий куб

Level of difficultyEasy
Reading time8 min
Views21K

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

Первоначальная идея этого устройства взята у исследователей Швейцарской высшей технической школы Цюриха, продемонстрировавших в этом видео свой Cubli. За последующие годы дизайн в определённых аспектах был усовершенствован. В частности, Bobrow et al (Университет Сан-Паулу) предложили улучшенную концепцию управления, уменьшающую количество IMU (блоков инерциальных датчиков) с шести до всего одного.

Я решил собрать такое устройство. Хотя идея и не нова, все предыдущие работы по этой теме в основном имели закрытые исходники. Я планирую изменить ситуацию. Это значит, что мне придётся выполнить реверс-инжиниринг и начертить всё с нуля. Результат моей работы, полностью опенсорсный (GitHub), показан в видео.
Читать дальше →
Total votes 118: ↑118 and ↓0+141
Comments39

Байт-кодовые VM в неожиданных местах

Level of difficultyMedium
Reading time4 min
Views10K

Отвечая на вопрос в Twitter, Ричард Хипп написал, почему SQLite использует байт-кодовую VM для исполнения операторов SQL.

Вероятно, большинство людей ассоциирует байт-кодовые VM с языками программирования общего назначения, например, с JavaScript или Python. Но иногда их можно встретить в неожиданных местах! В статье я расскажу о тех, которые знаю.
Читать дальше →
Total votes 52: ↑50 and ↓2+70
Comments16

Записываем музыку при помощи CSS Grid

Level of difficultyMedium
Reading time8 min
Views6.7K
Слишком часто я наблюдал за тем, как импровизирующий музыкант трясущимися руками пытается увеличить pdf размером A4 на крошечном экране телефона в самом разгаре исполнения. Мы обязаны создать плавный и отзывчивый рендеринг музыки для веба!

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

Прототип Scribe


SVG, отрендеренный Scribe 0.2

Несколько лет назад я создал прототип рендерера музыки, который назвал Scribe. Он выполняет преобразование JSON в SVG. Изначально я стремился к созданию адаптивного рендерера музыки. Это было хорошее демо, но для дальнейшего развития пришлось бы писать сложный многопроходный движок генерации макетов, а у меня тогда возникли другие дела.

Вскоре после этого я занялся адаптированием Grid под проекты компании, и тут мне почудилось нечто знакомое: я задался вопросом, а не станет ли он решением некоторых проблем, с которыми я столкнулся при разработке Scribe?
Читать дальше →
Total votes 54: ↑54 and ↓0+62
Comments17

Нельзя предполагать, что все используют UTF-8

Level of difficultyMedium
Reading time6 min
Views17K
Как вычислять кодировку при помощи статистики

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

По крайней мере, в таком положении вещей есть, кого винить: Бога. Ведь именно он вынудил человечество говорить на разных языках из-за древнего спора о строительстве объекта недвижимости.

Однако человечество может винить себя за то, что сложности в общении испытывают компьютеры.

И одна из самых больших проблем одновременно является самой простой: компьютеры не договорились о том, как записывать буквы двоичным кодом.
Читать дальше →
Total votes 58: ↑53 and ↓5+70
Comments92

50 лет первой операционной системе для персональных компьютеров

Level of difficultyEasy
Reading time9 min
Views13K

В 1974 году первопроходец ПО для PC Гэри Килдалл продемонстрировал в Пасифик-Гроув, Калифорния, первую коммерчески успешную операционную систему для персонального компьютера — CP/M. В этой статье мы расскажем историю о том, как его компания Digital Research Inc. превратила CP/M в отраслевой стандарт, а позже проиграла версии ОС от Microsoft, скопировавшей внешний вид и стиль ПО DRI.
Читать дальше →
Total votes 68: ↑68 and ↓0+79
Comments30

Как я портировал Sonic 2 на графический калькулятор

Level of difficultyMedium
Reading time8 min
Views4.9K

Этот пост посвящён тому, как я портировал 8-битный Sonic 2 на TI-84+ CE

Часть 1: с чего всё началось


Эта история началась осенью 2022 года, когда я смотрел видео This Does Not Compute об истории игр на графических калькуляторах. Примерно на пятой минуте автор мимоходом упомянул типы процессоров, которые использовались в этой линейке графических калькуляторов. В большинстве из них был установлен Z80, в 89 и 92 задействовали M68K, а в линейке Nspire использован процессор на основе ARM.

Это меня очень заинтересовало, ведь я знал, какие процессоры использовала Sega в своих ретроконсолях: Z80 в Master System и M68K в Genesis. Калькуляторы имеют экраны в градациях серого, но мне захотелось узнать, пробовал ли кто-нибудь портировать игру Sonic с консолей на один из калькуляторов.

К своему удивлению, я выяснил, что этого никто не делал; более того, за исключением SonicUP и Sonic TI-Blast никто не создавал завершённый платформер про Соника для калькуляторов TI. Если не считать Nspire, но он настолько мощный, что способен эмулировать старые игровые консоли, так что меня он не особо интересует.

Поэтому я задался вопросом: удастся ли мне портировать уже существующий дизассемблированный код Sonic на графический калькулятор TI. Но сначала мне нужно было выбрать конкретную игру.
Читать дальше →
Total votes 40: ↑37 and ↓3+52
Comments4

Насколько быстрее стали терминалы в GNOME 46?

Level of difficultyMedium
Reading time9 min
Views7.9K

VTE (Virtual TErminal library) — это библиотека, лежащая в основе различных эмуляторов терминала GNOME. Она предоставляет GTK-виджет, отображающий элемент терминала, используемый в приложениях наподобие GNOME Terminal, Console, Black Box, Tilix, Terminator, Ptyxis и других. Также она используется во встроенных терминалах Builder и Workbench.

На протяжении цикла GNOME 46 в VTE было внесено множество улучшений производительности. Кристиан Хергерт говорил о некоторых из них в своих постах о VTE и о своей работе в GNOME 46. Но насколько же улучшилась производительность? Чего стоит ожидать вам, пользователю, от установки свежего обновления Fedora 40 и запуска любимого терминала?

Давайте измерим и разберёмся!
Читать дальше →
Total votes 45: ↑45 and ↓0+56
Comments21

Анатомия Hello World на языке C

Level of difficultyMedium
Reading time15 min
Views24K

Эта статья посвящена программе Hello World, написанной на C. Это максимальный уровень, на который можно добраться с языком высокого уровня, не беспокоясь при этом о том, что конкретно язык делает в интерпретаторе/компиляторе/JIT перед выполнением программы.

Изначально я хотел написать статью так, чтобы она была понятна любому, умеющему кодить, но теперь думаю, что читателю полезно иметь хотя бы некоторые знания по C или ассемблеру.
Читать дальше →
Total votes 125: ↑125 and ↓0+142
Comments47

Не то, что кажется: 15 наивных вопросов об айсбергах + конкурс

Level of difficultyEasy
Reading time10 min
Views6K
Примерно раз в 2–3 года мне удаётся увидеть ледоход на Волге. Это впечатляющее зрелище: льдины скрипят, поют, наезжают друг на друга, сталкиваются и отталкиваются на считаные секунды. Откровенно говоря, выглядит всё это не только величественно, но и небезопасно: кажется, что льдины готовы затереть всё живое и неживое на своём пути. Но дух захватывает.

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

А что вообще мы знаем об айсбергах, кроме истории с «Титаником»? 

Автор — чудесный Антон Гудим
Читать дальше →
Total votes 42: ↑40 and ↓2+59
Comments9

Gmail исполнилось двадцать лет

Level of difficultyEasy
Reading time6 min
Views5.9K

Когда выпущенный двадцать лет назад дурашливый пресс-релиз ознаменовал открытие Gmail, многие посчитали это розыгрышем. Обещалось, что сервис предоставит солидный по тем временам 1 гигабайт хранилища — огромная величина в эпоху 15-мегабайтных почтовых ящиков. Заявлялось, что он будет абсолютно бесплатным, хотя многие почтовые ящики в то время были платными. Смущала и дата: о запуске сервиса объявили первого апреля, что предвещало какую-то шутку.

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

Подростки известны своей драматичностью, но Gmail действительно удалось совершить революцию в электронной почте. Он переосмыслил возможности наших почтовых ящиков и стал основной частью наших цифровых личностей. По оценкам, сейчас сервис насчитывает 1,2 миллиарда пользователей (примерно седьмую часть от мирового населения) и сегодня он стал практически необходимостью для выполнения любых действий онлайн. Часто кажется, что Gmail всегда был и всегда будет.
Читать дальше →
Total votes 42: ↑42 and ↓0+53
Comments36

Что можно сделать на личном веб-сайте

Level of difficultyMedium
Reading time6 min
Views22K

Blot просто берёт и превращает папку в сайт. Текстовые файлы в папке автоматически становятся веб-страницами на сайте

Мы уже упоминали десяток способов, как использовать личный VPS в минимальной конфигурации за 130 рублей. Это облачное хранилище для файлов, архив для бэкапов, почтовый сервер, игровой сервер и т. д. На него можно поставить практически любой софт: 0,5 ГБ оперативной памяти хватит для запуска большинства linux-приложений (без GUI).

И веб-сервер с личным сайтом и блогом — одно из таких приложений. Почему нет? За доллар в месяц вложение в личный бренд и технологическую независимость окупится многократно.
Читать дальше →
Total votes 49: ↑32 and ↓17+27
Comments32

Проблема: Wi-Fi работает только во время дождя

Level of difficultyEasy
Reading time6 min
Views46K
Вот что ответил отец на мой вопрос о проблеме с домашним подключением к интернету: «Wi-Fi работает, только когда идёт дождь».


Давайте сделаем шаг назад, чтобы осознать смехотворность этой ситуации.

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

Мой отец — инженер, он работал с сетевым оборудованием, ещё когда я не родился. В основанной им компании он проектировал и внедрял множество сложных сетевых систем в организациях по всей стране: от гигабитного Ethernet для офисного здания до междугородных соединений при помощи микроволновых линий связи прямой области видимости.

Он последний, кто мог бы сказать нечто столь абсурдное.

«Что?», — удивлённо произнёс я. «Wi-Fi работает, только когда идёт дождь. Это началось пару недель назад, у меня пока не было времени с этим разобраться», — повторил он терпеливо.
Читать дальше →
Total votes 133: ↑124 and ↓9+143
Comments142

Как работает радио?

Level of difficultyMedium
Reading time8 min
Views18K

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

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


Если вы подзабыли какие-то из этих тем, то рекомендую сначала освежить память.
Читать дальше →
Total votes 64: ↑64 and ↓0+65
Comments51
1
23 ...

Information

Rating
Does not participate
Works in
Registered
Activity