Pull to refresh
1
0
Send message

Самодельный 3D принтер на гальванометрических сканаторах

Reading time5 min
Views11K

История о том, как я делал свой первый 3D принтер.

Скажу сразу, статья больше обзорная и историческая, потому как деяния проходили в далёком 2013 году.

Напечатать
Total votes 31: ↑31 and ↓0+31
Comments14

Закон больших чисел и то, чем он не является

Reading time3 min
Views32K
О законе больших чисел (збч) написано много (например, на английском, тут и тут, также [1]). В этом тексте я попробую рассказать о том, чем закон больших чисел не является – об ошибочном восприятии этого закона и потенциальных ловушках, спрятанных в математических формулировках.

Начнем с того, что же такое закон больших чисел. Неформально, это математическая теорема о том, что «вероятность отклонений среднего по выборке от математческого ожидания мала» и что «эта вероятность стремится к нулю при увеличении выборки». Совсем неформально,
Читать дальше →
Total votes 10: ↑6 and ↓4+6
Comments13

Загрузочный диск Windows PE своими руками

Reading time36 min
Views120K
Сисадмину или мастеру сервисного центра, да и просто в хозяйстве на всякий случай помогает в работе загрузочная флешка с набором полезных программ, и в интернете можно найти полно готовых решений с «кучей» софта на все случаи в жизни. Но каждый, кто пользовался чужими готовыми вариантами LiveCD, рано или поздно задумывался о том, что по факту используется лишь малая часть приложений. Весь же остальной ненужный груз софта, который порой может составлять более 98% всего набора LiveCD, лишь мешает работать. Почему? Потому что LiveCD загружается прямиком в оперативную память, и чем больше объем LiveCD, тем больше ожидания загрузки, а если ещё и попался древний компьютер, то LiveCD может и вовсе не загрузится от нехватки памяти. И что же делать? Сделать свой собственный LiveCD! В этой статье я расскажу то, чего вы не найдете даже в гугле.
Читать дальше →
Total votes 37: ↑36 and ↓1+40
Comments72

Как разработчику организовать личную базу знаний: систематизация информации из книг, статей, видео и курсов

Level of difficultyEasy
Reading time6 min
Views46K

Привет, Хабр!

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

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

Читать далее
Total votes 69: ↑67 and ↓2+80
Comments96

Как мы верифицированный полетный контроллер для квадрокоптера написали. На Ada

Reading time10 min
Views20K

Однажды на новогодних каникулах, лениво листая интернет, бракоделы в нашем* R&D офисе заметили видео с испытаний прототипа роботакси. Комментатор отзывался восторженным тоном – революция, как-никак. Но тренированное ухо расслышало в шуме с испытательной площадки еще кое-что. Контроллер скорости (штука для управления тягой винтов) сыграл мелодию при старте, как это любят делать пилоты дронов, которые часто используют полётный контроллер Betaflight. Неужели там бета-флайт? Ну, или какая-то из ее немногих разновидностей.

Перед глазами побежали флешбеки, где-то из глубин подсознания всплыла забытая уже информация о прошивках для Тойоты на миллионы тысяч строк Си и 2 тысячи глобальных переменных (Toyota: 81564 ошибки в коде).

После просмотра исходного кода Betaflight на гитхабе стало еще страшнее, и чем дальше, тем хуже. Это – управляющая программа для тяжелого устройства с острыми винтами, которое летает высоко, быстро. Становится страшно: игрушки это одно, но я бы не хотел летать, на таком такси. Но ведь можно иначе? Можно, решили мы! И решили это доказать. На Avito был куплен акробатический FPV-“квадрик” на базе STM32F405, для отладки – Discovery-платы для этого же контроллера, а дальше все как в тумане..

Читать далее
Total votes 70: ↑68 and ↓2+88
Comments58

Отечественные Линуксы: кто есть кто?

Reading time7 min
Views196K

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

Пошли разбираться!
Total votes 27: ↑26 and ↓1+33
Comments90

Ускоренное импортозамещение или как разворачивать Linux-дистрибутив БЕЗ помощи SCCM в распределённой корпоративной сети

Reading time9 min
Views20K
Готовы к захвату десктоповГотовы к захвату десктопов

Опять в интернете кто-то неправ! Натолкнулся недавно на статью и даже сначала ужасно огорчился. И один из комментариев в самую точку — зачем насиловать пингвина виндой? Разумеется, это негодование шуточное. На самом деле — это инсталляция с помощью стороннего dhcp/bootp-сервера, а то что он на windows, так это другой вопрос — у кого и что было, кто и чем умеет пользоваться. Ребята, молодцы! По крайней мере, движутся в правильном направлении. А вот насколько это проще без инфраструктуры Windows, мы сейчас и посмотрим.
Читать дальше →
Total votes 37: ↑37 and ↓0+37
Comments24

Быстрый двоичный поиск без ветвления

Level of difficultyMedium
Reading time15 min
Views13K

Мои читатели — занятые люди, поэтому сразу перейду к делу. Вот она, самая быстрая обобщённая (и простая) реализация двоичного поиска на C++:

template <class ForwardIt, class T, class Compare>
constexpr ForwardIt sb_lower_bound(
      ForwardIt first, ForwardIt last, const T& value, Compare comp) {
   auto length = last - first;
   while (length > 0) {
      auto rem = length % 2;
      length /= 2;
      if (comp(first[length], value)) {
         first += length + rem;
      }
   }
   return first;
}

Тот же интерфейс функции, что и у std::lower_bound, но вдвое быстрее и короче. «Без ветвления», потому что if компилируется в команду условной передачи, а не в ветвление/условный переход. Ближе к концу статьи мы изучим опции компилятора и даже более быстрые версии полностью без ветвления. Для понимания этой статьи не нужны особые знания в C++. Достаточно понимать, что итераторы (first и last) по сути являются указателями на элементы массива, хотя могут указывать на один элемент дальше, чем последний элемент массива. Можете не обращать внимания на template, class, constexpr и &. Вот если бы существовал быстрый и чистый язык, работающий на уровне железа...1 2
Читать дальше →
Total votes 78: ↑78 and ↓0+78
Comments6

Что происходит, когда запускаешь «Hello World» в Linux

Level of difficultyMedium
Reading time15 min
Views27K

Сегодня я задумалась о том, что происходит, когда запускаешь в Linux простую программу «Hello World» на Python.

print("hello world")

Вот как это выглядит в командной строке:

$ python3 hello.py
hello world

Но внутри происходит гораздо больше. Я объясню, что там творится, и, что гораздо важнее, расскажу об инструментах, при помощи которых вы сами сможете исследовать происходящее. Мы воспользуемся readelf, strace, ldd, debugfs, /proc, ltrace, dd и stat. Я не буду рассматривать относящиеся к Python части, только объясню, что происходит при выполнении динамически компонуемых исполняемых файлов.
Читать дальше →
Total votes 98: ↑98 and ↓0+98
Comments10

Как с помощью ChatGPT писать SQL-запросы. Несколько кейсов

Reading time6 min
Views12K

Привет, Хабр! Меня зовут Анастасия Иванова, я работаю в МТТ (входит в экосистему МТС) техническим писателем МТС Exolve. В статье расскажу о том, как ChatGPT может сэкономить время и усилия начинающего специалиста по SQL.

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

Читать далее
Total votes 13: ↑10 and ↓3+13
Comments11

USB на регистрах: составные устройства

Reading time13 min
Views8.3K


Еще более низкий уровень (avr-vusb)
USB на регистрах: STM32L1 / STM32F1
USB на регистрах: bulk endpoint на примере Mass Storage
USB на регистрах: interrupt endpoint на примере HID
USB на регистрах: isochronous endpoint на примере Audio device


Вот мы познакомились со всеми базовыми типами конечных точек, пришло время разработать какое-нибудь полезное устройство. Для примера пусть это будет программатор-отладчик STM-ок, работающий через стандартный UART bootloader.

Читать дальше →
Total votes 31: ↑29 and ↓2+39
Comments8

013.jpg или Принцессы не какают

Reading time20 min
Views255K
Вот уже совсем скоро конец света, дорогие мои айтишнички. Чтобы вы не боялись закрывать сегодня глазки, я расскажу вам добрую сказочку. О том, что даже после самого тёмного кончика светика, после самого дремучего апокалипсика, когда даже электрончики откажутся строем ходить по проводкам, для вас, дорогие айтишнички найдётся работёнка… Принцессы? Принцессы будут. И драконы тоже. Какая ж сказка без принцесс и драконов? Так что не боимся, закрываем глазоньки и слушаем волшебную сказочку...
image
— Именем Князя Питерского, давайте сюда декларацию. Что везем? Откуда?
— Из Новосибирска. 256 мегабайт сертифицированных данных для Интернета Его Высокопревосходительства. Научные, метеорологические, новости, деловая и частная корреспонденция, — доложила я, зная, что таможня шутить не любит.
— Открывайте, посмотрим.
— Что, все 256 мегабайт смотреть будете?
Открывайте, разберемся...
Total votes 375: ↑288 and ↓87+201
Comments54

OLE, COM, COM+

Reading time4 min
Views10K

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

Читать далее
Total votes 9: ↑9 and ↓0+9
Comments15

Самые популярные бесплатные движки для разработки игр

Reading time7 min
Views184K
В январе я участвовала в своем первом геймджеме — Global Game Jam 2022, в Стамбуле. На джеме все участники писали игры на движках — ибо надо быстро. Игровой движок — это физика, рендеринг, скрипты, искусственный интеллект. Создавать игру с нуля или пользоваться движком — вопрос вкуса. Вон, Джонатан Блоу вообще пишет свой движок, чтобы писать на нем игру.

Я обратила внимание, что большинство студентов использовали либо Unity либо GameMaker. Сама я питаю нежные чувства к Construct, но на нем всего одна команда делала игру. Я решила поискать альтернативу для себя, заодно запилила подборку бесплатных движков для начинающих (а может и продолжающих) игроделов.

Еще я веду канал в Telegram GameDEVils (на русском) и блог на Substack (на английском), делюсь там клевыми материалами (про геймдизайн, разработку и историю игр).

Популярные движки Steam и itch.io


Вот статистика, игры на каких движках выкладывают в Steam:


Читать дальше →
Total votes 27: ↑18 and ↓9+14
Comments19

Простая игра на SFML

Reading time9 min
Views60K
Будем делать игру «пятнашки» на языке C++ с использованием библиотеки SFML. Пятнашки — это широко известная головоломка, которая выглядит следующим образом:


На игровом поле размером 4х4 случайным образом расположены 15 плашек с номерами от 1 до 15 и одно свободное место. Передвигать плашки можно только по одной и только на свободное место. Целью игры является выстроение плашек на игровом поле в порядке, соответствующем их номерам.

Итак, начнем.
Читать дальше →
Total votes 8: ↑8 and ↓0+8
Comments10

«Хабр, не закрывайте старый редактор!» Как мы хакнули систему, ускорив верстку статей в несколько раз

Reading time4 min
Views12K

Верстать статьи в старом редакторе Хабра сложно: он работает на базе HTML- и Markdown-разметок. Из-за этого подготовка материала к публикации занимает много времени. Один из способов решения проблемы — использовать новый редактор. Но он нас не устраивает: несмотря на свою простоту, новый редактор имеет ряд критичных для нас ограничений. Поэтому мы выбрали «олдскульный» вариант и кое-что придумали.

Как мы заставили Python верстать за нас и почему топим за поддержку старого редактора, рассказываем под катом.
Читать дальше →
Total votes 92: ↑88 and ↓4+126
Comments171

Всё про USB-C: резисторы и E-Marker

Level of difficultyHard
Reading time7 min
Views23K

Если вы следите за нашей сагой про USB-C, то уже знаете, что жила CC в этих кабелях используется для коммуникации и определения полярности. Однако есть и один малоизвестный факт, а именно то, что в USB-C коммуникация реализуется через два протокола – аналоговый и цифровой. Сегодня мы разберём аналоговую передачу, получше уяснив роль и принцип работы пресловутых резисторов 5,1 кОм. Помимо этого, мы познакомимся с микросхемами E-Marker и таинственным VCONN.
Читать дальше →
Total votes 62: ↑62 and ↓0+62
Comments12

Раскрываем секреты загрузочных ISO-образов

Reading time20 min
Views87K


В этой статье я хочу поговорить об ISO-файлах, на которых, как известно, распространяются дистрибутивы операционных систем. Начиная писать статью, я немного сомневался в её актуальности, так как я ассоциировал ISO-образы с оптическими дисками, которые, ввиду ряда причин, уходят в прошлое. У меня было стойкое понимание, что ISO-файлы в основном нужны только для хранения образов оптических дисков, которые содержат установщик операционной системы. Но, как оказалось, всё гораздо сложнее и интереснее, особенно применительно к современному железу.
Читать дальше →
Total votes 193: ↑193 and ↓0+193
Comments73

TP-Link TL-WR703N. Небольшой, но полезный мод

Reading time3 min
Views208K
Миниатюрный роутер TP-Link TL-WR703N стал эдаким преемником знаменитого D-Link DIR-320 — в сети можно найти немало конструкций на базе этого девайса, вроде роботов с веб-камерой и управлением через веб-интерфейс, приемников интернет-радиостанций и т.д. Я же заказывал его для использования именно по прямому назначению, но руки все равно зачесались внести какое-нибудь изменение в конструкцию — так и родилась идея встроить в корпус дисплей для вывода системной информации. Под катом — мало текста и много фотографий)



Читать дальше →
Total votes 127: ↑125 and ↓2+123
Comments42

Недорогие, маленькие, сетевые компьютеры — небольшой обзор

Reading time6 min
Views96K
«Чтоб ты жил в интересные времена!» — якобы старинное китайское проклятие.
Да, нам с вами повезло или «повезло» жить в действительно интересные времена (вариант — «в эпоху перемен»). Возможно, это на самом деле проклятие, особенно с точки зрения мифических древних китайцев. Однако факт остается фактом: то, что еще пара десятков лет назад казалось невозможным, сейчас доступно практически каждому. Особенно это заметно в нашей отрасли — информационные технологии и цифровая электроника развиваются просто какими-то совершенно фантастическими темпами. Функциональные возможности, быстродействие, миниатюрность и (относительная) дешевизна современных цифровых решений поражает воображение.
Еще совсем недавно сетевой компьютер размером меньше кредитки и стоимостью в несколько сотен рублей, пригодный для создания на его базе интересных самостоятельных проектов энтузиастами-одиночками с относительно невысоким уровнем знаний в области электроники и программирования, казался весьма отдаленной перспективой. И вот уже мы можем смело выбирать из десятка (как минимум) альтернатив! Давайте посмотрим, что сейчас можно приобрести буквально за несколько десятков долларов, чтобы построить вокруг этого нечто впечатляющее и даже, может быть, полезное.
Итак, поехали.
Total votes 65: ↑60 and ↓5+55
Comments124
1

Information

Rating
Does not participate
Registered
Activity