Search
Write a publication
Pull to refresh
208
72.1
Send message

Простая гравировка для дома: электрический карандаш

Level of difficultyEasy
Reading time5 min
Views32K


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

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

Стек протоколов BLE 5 -физический уровень

Level of difficultyEasy
Reading time9 min
Views6.5K

Физический уровень - это нижний уровень стека протоколов BLE, который определяет основные радиочастотные параметры связи BLE, включая частоту сигнала, схему модуляции и т.д.

Рабочая частота BLE составляет 2,4 ГГц. Он использует частотную модуляцию GFSK и использует механизм скачкообразной смены частоты для решения проблемы перегрузки канала.

Существует три схемы реализации для физического уровня BLE 5, а именно некодированный физический уровень со скоростью 1 Мb/s, некодированный физический уровень со скоростью 2 Мb/с и кодированный физический уровень со скоростью 1 Мb/s. Среди них некодированный физический уровень со скоростью 1 Mb/s совместим с физическим уровнем протокола серии BLE v4, в то время как два других физических уровня увеличивают скорость связи и расстояние связи соответственно.

Читать далее

Графика древности: легендарный Mode 7

Level of difficultyEasy
Reading time22 min
Views10K

Технологический переход в индустрии видеоигр, случившийся в середине 1990-х годов — от пиксельной графики игр прошлых лет к полигональной графике игр чуть менее прошлых лет — произошёл не одномоментно. Ему предшествовала эпоха экспериментов, когда разработчики придумывали разнообразные способы убедительной имитации трёхмерного изображения в рамках скромных вычислительных ресурсов. Изометрический движок Filmation и силуэтная графика в Tau Ceti на ZX Spectrum, технология масштабирования спрайтов Super Scaler компании Sega, рейкастинг в Wolfenstein 3D, BSP-дерево в Doom, воксельный ландшафт в игре Comanche — эти времена породили множество любопытнейших технологий, каждая из которых достойна отдельного рассказа.

В до сих пор звучащих отголосках так называемых консольных войн той эпохи (что круче — Sega Genesis или Super Nintendo?) часто можно услышать ещё одно название, которым уместно дополнить список выше — Mode 7. Мы не знаем, что это такое, если бы мы знали, что это такое, но обычно под этим подразумевается какое-то вращение или масштабирование объектов в играх, или же уходящая вдаль дорога, как в гоночных играх F-Zero и Super Mario Kart, или же карта мира, как во многих играх жанра JRPG. В реальности всё интереснее, сложнее, и как водится, требовало от разработчиков недюжинной креативности. Сегодня поговорим об этой технологии.
Читать дальше →

Безопасное программирование на Си. Часть 1

Level of difficultyEasy
Reading time9 min
Views16K

Статья для первокурсников технических ВУЗов, которым повезло изучать Си в качестве первого языка программирования. В рамках данной работы расскажу и покажу, как избегать типовых ошибок при разработке, а если уж вы эту ошибку допустили - как быстро и безболезненно её найти.

Читать далее

Превращаем TV-box в мини-компьютер: установка Linux Armbian на примере X96 Max+ 100W

Level of difficultyMedium
Reading time19 min
Views73K

Одноплатные компьютеры своим появлением взяли на себя огромное количество задач и с каждым днём решают всё больше наших проблем. Но многие окружающие нас бытовые устройства являются одноплатными компьютерами с практически с идентичной многим привычным SBC (single board computer) начинкой и телевизионные приставки классический тому пример.

Когда-то я приобрел ТВ приставку X96 Max Plus 100W на Android чтобы потестить ее вдоль и поперек и пришел к тому что классическое ее применение для просмотра мультиков и Android игр мне не интересно.

Читать далее

Анатомия Интернета: что в имени тебе моём? (DNS)

Level of difficultyMedium
Reading time33 min
Views29K

Всем нам нравится писать в строке бровсера https://habr.com/. Никому не
захотелось бы писать там https://178.248.237.68/. К тому же, IP-адрес может
измениться, если Хабр решит перейти на другой хостинг.

Служба Интернета, которая превращает удобные всем имена в IP-адреса,
называется DNS, Domain Name System, "система доменных имен".

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

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

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

Читать далее

Советские игровые автоматы и их заграничная родня: краткая история создания

Level of difficultyEasy
Reading time21 min
Views4.9K

Советские игровые автоматы и их заграничная родня: краткая история создания

На развесистом генеалогическом древе игровых автоматов, которому почти полтора века, отечественные устройства — лишь небольшой побег. Он пошел в рост сравнительно поздно, в конце 1960-х – начале 1970-х годов, с началом разрядки международной напряженности, как это называют у нас, или детанта, как это назвали на Западе. С точки зрения истории техники и инженерии это было интересное время.

Как появились советские игровые автоматы, читайте в нашей статье.

Читать далее

Сам себе Linux смартфон: Как я выкинул Android и написал свою прошивку с нуля

Level of difficultyMedium
Reading time17 min
Views85K
image

К огромному сожалению, старые смартфоны всё чаще и чаще находят своё пристанище в мусорном баке. К прошлым, надежным «друзьям» действует исключительно потребительское отношение — чуть устарел и сразу выкинули, словно это ненужный мусор. И ведь люди даже не хотят попытаться придумать какое-либо применение гаджетам прошлых лет! Отчасти, это вина корпораций — Google намеренно тормозит и добивает довольно шустрые девайсы. Отчасти — вина программистов, которые преследуют исключительно бизнес-задачи и не думают об оптимизации приложений совсем. В один день я почувствовал себя Тайлером Дёрденом от мира IT и решил бросить вызов проприетарщине: написать свою прошивку для уже существующего смартфона с нуля. А дабы задачка была ещё интереснее, я выбрал очень распространенную и дешевую модель из 2012 года — Fly IQ245 (цена на барахолках — 200-300 рублей). Кроме того, у этого телефона есть сразу несколько внешних шин, к которым можно подключить компьютер или микроконтроллер, что даёт возможность использовать его в качестве ультрадешевого одноплатника для DIY-проектов. Получилось ли у меня реализовать свои хотелки? Читайте в статье!
Читать дальше →

Почему DNS по-прежнему сложно изучать?

Reading time7 min
Views12K

Я много пишу о технологиях, которые показались мне сложными. Недавно моя подруга Сумана задала мне интересный вопрос – почему все эти вещи так сложно изучать? Почему они кажутся такими загадочными?

Для примера возьмём DNS. Мы пользуемся DNS с 80-х (больше 35 лет!). Он применяется на каждом веб-сайте Интернета. И он довольно стабилен – во многих смыслах он работает точно так же, как делал это тридцать лет назад.

Но мне понадобились ГОДЫ, чтобы понять, как с уверенностью отлаживать проблемы с DNS, и я видела множество программистов, тоже испытывавших трудности с отладкой проблем DNS. Что же происходит?

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

(В этом посте я не буду глубоко объяснять DNS, подробности о его работе см. в моём посте Implement DNS in a Weekend или в других моих постах о DNS.)

Читать далее

Исследуем внутренности Linux версии 0.01

Level of difficultyMedium
Reading time7 min
Views37K

Ядро Linux часто упоминают как ужасно масштабное опенсорсное ПО. На момент написания этой статьи последняя версия 6.5-rc5 состоит из 36 миллионов строк кода. Не нужно говорить, что Linux — это плод упорного многолетнего труда множества участников проекта.

Однако первая версия Linux, v0.01, была довольно маленькой. Она состояла всего из 10239 строк кода. Если исключить комментарии и пустые строки, то остаётся всего 8670 строк. Это достаточно малый объём для анализа и хорошее начало для изучения внутренностей ядер UNIX-подобных операционных систем.

Я получил удовольствие от чтения кода v0.01. Это походило на посещение Музея компьютерной истории в Маунтин-Вью — я наконец-то убедился, что легенды верны! Я написал эту статью, чтобы поделиться с вами этим восхитительным опытом.

Читать далее

Разбираем HTTP/2 по байтам

Level of difficultyMedium
Reading time24 min
Views42K

image


Откройте любую статью с обзором HTTP/1.1. Скорее всего, там найдётся хотя бы один пример запроса и ответа, допустим, такие:


GET / HTTP/1.1
Host: localhost

HTTP/1.1 200 OK
Date: Sat, 09 Oct 2010 14:28:02 GMT
Server: Apache
Content-Length: 38
Content-Type: text/html; charset=utf-8

<!DOCTYPE html>
<h1>Привет!</h1>

Теперь откройте статью с обзором HTTP/2 или HTTP/3. Вы узнаете о мультиплексировании запросов, о сжатии заголовков, о поддержке push-технологий, но вряд ли увидите хоть одно конкретное сообщение. Ясно, почему так: HTTP/1.1 — текстовый протокол, тогда как сиквелы к нему бинарные. Это очевидное изменение открывает дорогу ко множеству оптимизаций, но упраздняет возможность просто и доступно записать сообщения.


Поэтому в этой статье предлагаю покопаться в кишках у HTTP/2: разобрать алгоритмы установки соединения, формат кадров, примеры взаимодействия клиента с сервером.

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

Как делается OpenSource: личный опыт

Level of difficultyMedium
Reading time17 min
Views39K

Я - автор двух пакетов, входящих более-менее во все дистрибутивы Linux: sane-airscan и ipp-usb.

Кроме того, sane-airscan входит во все основные дистрибутивы BSD (FreeBSD, NetBSD и OpenBSD) и в ChromeOS. ipp-usb в ChromeOS не взяли потому, что он написан на Go, а у них там очень жестко с размером исполняемых файлов, вместо этого они написали свое на Rust, но предпочли бы взять моё изделие, если бы могли. Совсем недавно появился порт ipp-usb на FreeBSD, вероятно, другие BSD тоже скоро подтянутся.

Вместе эти два пакета образуют стек "бездрайверного" сканирования документов для Linux и *BSD, а в перспективе нескольких лет, когда старые сканеры, наконец, вымрут, вероятно других драйверов и не останется.

Кроме того, ipp-usb делает возможным "бездрайверную" печать на USB-устройствах.

Здесь я хочу рассказать, каково оно, быть автором популярных OpenSource пакетов. Хоть эта работа и не принесла мне особых денег (на что я, впрочем, особо и не рассчитывал), она принесла мне бесценный опыт.

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

Первое занимает гораздо меньше времени, чем второе. Второе - гораздо меньше времени, чем третье.

Читать далее

Доказана омнипериодичность игры «Жизнь» Конвея

Level of difficultyEasy
Reading time12 min
Views20K

Сообщество игры "Жизнь", клеточного автомата, изобретённого Джоном Конвеем, с давних пор стремилось найти осцилляторы — стабильные конфигурации, которые повторяются с определённой периодичностью во времени — для каждого натурального числа. И вот, наконец, 21 июля 2023 года был найден осциллятор для последнего недостающего периода — 41, завершая таким образом доказательство омнипериодичности.

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

Читать далее

Развлечение на выходные: собираем Android для Raspberry Pi из исходного кода

Level of difficultyHard
Reading time4 min
Views13K

Привет, Хабр! В этой статье я хочу поделиться пошаговой инструкцией по компиляции Android Open Source Project для Raspberry Pi. Эта статья поможет разобраться в первых шагах разработки ОС на базе Android Open Source Project.

Читать далее

Новая жизнь советского джойстика

Level of difficultyEasy
Reading time16 min
Views8.5K

Так получилось, что уже долгое время в моей рабочей зоне лежал отечественный джойстик типа «джойстик», а точнее даже целый «игровой манипулятор», Веста ИМ-01. Маленький и симпатичный, подозрительно напоминающий джойстик ProLine для Atari 7800, он достался мне в комплекте с одним из приобретённых в начале года Спектрумов, и с тех пор периодически мозолил глаза, вызывая вопрос — что бы с ним сделать? У меня уже есть такой же в коллекционном состоянии, этот же немного повидал виды, и его не особо жалко перепрофилировать под какие-нибудь интересные нужды. Можно было бы приспособить его для клонов Atari 2600, которых у меня чуть больше, чем джойстиков к ним, но это же скучно.

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

Суть проекта: простейшая самодельная игровая приставка для телевизора, встроенная в корпус классического джойстика.
Читать дальше →

Бóльшая часть технического контента — дерьмо

Level of difficultyEasy
Reading time4 min
Views34K

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

Данный шаблон поведения - это потребление, а не созидание. Потребление без каких-либо вопросов. Потребление прикрывающиеся мнением авторитетов.

Читать далее

Сбер открывает доступ к нейросетевой модели ruGPT-3.5

Level of difficultyEasy
Reading time3 min
Views47K

? Upd. Добавили пример запуска в Colab'е.

Друзья, свершилось. Сегодня мы рады сообщить вам о релизе в открытый доступ нейросетевой модели, которая лежит в основе сервиса GigaChat.

Про то, что такое GigaChat и как мы его обучаем, вы можете прочитать в нашей предыдущей статье. Скажу лишь, что главной его частью, ядром, порождающим креативный ответ на ваш запрос, является языковая модель обученная на огромном количестве разнообразных текстов — сотен тысяч книг, статей, программного кода и т.д. Эта часть (pretrain) затем дообучается на инструкциях, чтобы лучше соответствовать заданной форме ответа. Обучение такого претрейна занимает около 99% от всего цикла обучения и требует значительного количества ресурсов, которыми обычно обладают только крупные компании.

Этот претрейн, названный ruGPT-3.5, мы выкладываем на Hugging Face под лицензией MIT, которая является открытой и позволяет использовать модель в коммерческих целях. Поговорим о модели подробнее.

Читать далее

Настройка клиента Outline VPN на OpenWRT (все версии) на базе пакета shadowsocks-libev и tun2socks

Level of difficultyEasy
Reading time10 min
Views131K

Outline VPN это проект компании Jigsaw, дочерней компании Google. Outline использует протокол Shadowsocks для связи между клиентом и сервером. Трафик шифруется с помощью шифра IETF ChaCha20 и аутентифицируется с помощью IETF Poly1305.

В этой инструкции мы рассмотрим настройку клиента на базе пакета shadowsocks-libev и опционально, поднятие интерфейса с помощью kmod-tun и xjasonlyu/tun2socks. Способ подходит для роутеров с объёмом ОЗУ от 64 Мб и ПЗУ от 8 Мб.

UPD. 14.09.2023 Решение для ошибки ниже найдено, описал в п.4

daemon.err /usr/bin/ss-redir[7401]: accept: No file descriptors available

Нам потребуется доступ к SSH и Веб-интерфейсу LuCI

1.Установка пакетов на роутере

2.Получение ключа доступа в Outline Manager

3.Настройка shadowsocks-libev на роутере

4.Фикс для OpenWRT 22.03 и выше

5.Настройка интерфейса с помощью tun2socks

Читать далее

Ping пакеты как временное хранилище данных на python raw socket

Level of difficultyMedium
Reading time7 min
Views11K

Payload (данные) в ping пакете действительно есть, однако до реальной пользы им далеко - это английский алфавит (нет, я не испытываю ненависть к латинице, просто мне хотелось бы уметь редактировать это содержимое).

Читать далее

Information

Rating
161-st
Registered
Activity