Pull to refresh
-2
0

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

Send message

Казалось бы, простой вопрос: что такое паттерны проектирования?

Reading time6 min
Views18K
image

В индустрии разработки ПО есть ряд тем, о которых ведутся споры почти в каждой компании. Я считаю, что история паттернов проектирования — одна из них. Можно найти сколько угодно постов, статей и ответов на Quora/Stackoverflow в пользу и не в пользу паттернов проектирования. Например, на днях я наткнулся на этот старый вопрос на Quora:
«Почему сейчас программисты меньше говорят о паттернах проектирования? Какие паттерны (если они есть) все еще представляют ценность?»
Читать дальше →
Total votes 17: ↑15 and ↓2+22
Comments3

Разбираем bluetooth протокол RGB лампы

Level of difficultyEasy
Reading time8 min
Views8.6K

В данной статье рассмотрим опыт реверс-инжиниринга bluetooth протокола, при помощи которого android приложение управляет цветами и эффектами работы закатной лампы. В результате будет написан небольшой генератор шфированных AES'ом сообщений на C#.

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

Пишем UART-терминал для Flipper Zero

Reading time3 min
Views7.1K

Почти все, кому надо и кому интересно, уже знакомы с Flipper Zero и знают, что это такое.

Для тех же, кто ещё не в курсе, приведу небольшое определение: Flipper Zero — это компактный цифровой мультитул для пентестеров и гиков. А ещё это тамагочи, в котором живет вполне себе дружелюбный кибер-дельфин.

Знакомство с дельфином

В августе прошлого года в одной из малиновых тусовок (канал в telegram по RaspberryPi) я как обычно пролистывал на большой скорости длинную «простыню» обсуждений. И тут мой глаз удивительным образов заметил хорошо знакомые слова — «Flipper Zero». Прочитав сообщение, я узнал, что сей девайс не просто уже существует, но и его можно, наконец, купить в России. 

В общем, и завертелось 😊

Читать далее
Total votes 40: ↑40 and ↓0+38
Comments7

Assembler в Go: техники ускорения и оптимизации

Level of difficultyHard
Reading time8 min
Views6.1K

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

В прошлой статье я рассказывал об ускорении копирования элементов одного слайса в другой с помощью средств Go. В этот раз я решил пойти дальше и посмотреть, что можно достичь, начав разговаривать с процессором на его языке. Я выбрал одну из оптимизированных версий функции Copy в качестве объекта исследования из решения задачи VK Cup'22/23, которая копирует только синий компонент RGBA в Paletted картинку. Если интересно узнать как её ускорить почти в 10 раз, прошу под кат.

Читать далее
Total votes 22: ↑21 and ↓1+28
Comments1

О вреде GOTO-фобии (с примерами на C)

Reading time17 min
Views32K

Готофобия – это боязнь использовать инструкции goto. Обычно возникает из-за непонимания и незнания контекста этой проблемы, а также из-за историй о незапамятных временах в истории программировании. Разработчики, страдающие готофобией, готовы жертвовать удобочитаемостью своего кода, только бы не прибегать к goto.

Читать далее
Total votes 95: ↑88 and ↓7+115
Comments344

Математическая продлёнка. Про углы и тригонометрию

Level of difficultyMedium
Reading time17 min
Views20K

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

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

Пишем простой чат с консольным интерфейсом используя трубно-ориентированное программирование с котами

Level of difficultyEasy
Reading time8 min
Views5.5K

Если в процессе изучения gRPC хотите попрактиковаться с Bidirectional Streaming (двунаправленная потоковая передача данных), c запросами в рамках одного соединения, инициированием событий со стороны сервера, то создание простого чата может быть отличным способом.

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

Пишем расширение Chrome, которое ворует вообще всё

Reading time10 min
Views25K

Пусть Manifest v3 и ограничил возможности браузерных расширений, но я считаю, что они далеко не исчерпаны. Чтобы доказать это, создадим расширение Chrome, крадущее максимально возможное количество данных.

Мы добьёмся двух целей:

  • Исследуем грани возможного для расширений Chrome
  • Продемонстрируем, что вы подвержены опасности, если не будете аккуратны с тем, что устанавливаете.

Примечание: на самом деле реализация этого расширения — злодейство. Вам не следует использовать в злонамеренных целях полномочия расширений, красть пользовательские данные и создавать зловредные браузерные расширения. Любые реализации, производные расширения или применение этих техник без разрешения Национальной баскетбольной ассоциации не рекомендуются.
Читать дальше →
Total votes 33: ↑31 and ↓2+37
Comments12

10 удивительно зрелищных простейших клеточных автоматов

Level of difficultyEasy
Reading time5 min
Views33K

Самое простое представление двумерного клеточного автомата основано на двух характеристиках: клетки имеют всего 2 состояния; правила изменения состояния зависят только от количества живых соседей из окрестности Мура первого порядка (8 окружающих).

Такая категория КА называется «Life-like», по названию самого известного автомата с такими характеристиками – «Conway's Game of Life». Игра «Жизнь» Конвея работает на правиле B3/S23, т.е. для рождения клетки требуется ровно 3 живых соседа, для выживания – 2 или 3. Во всех других случаях клетка умирает (или же остаётся пустой).

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

Сегодня взглянем на самых интересных представителей.

?
Total votes 158: ↑158 and ↓0+158
Comments24

История моделирования лесных пожаров

Level of difficultyEasy
Reading time14 min
Views2.6K

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

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

?
Total votes 7: ↑7 and ↓0+7
Comments1

Работаем с PostgreSQL в Go. Опыт Авито

Reading time8 min
Views25K

Привет! Меня зовут Дима Вагин, я бэкенд-инженер в Авито. Сегодня расскажу, как мы работаем с БД PostgreSQL из Go. Покажу, какие библиотеки и пулеры соединений мы используем для доставки в код параметров подключения и как мы их настраиваем. А ещё расскажу про проблемы, к которым приводит отмена контекста, и о том, как мы с ними справляемся.

Читать далее
Total votes 24: ↑22 and ↓2+25
Comments19

Всесоюзный конкурс человекоподобной робототехники в СССР. Как это было

Level of difficultyEasy
Reading time8 min
Views7.6K

В 1966 году в пятом номере журнала «Техника — молодёжи» появилось объявление о старте всесоюзного конкурса на лучшую конструкцию человекоподобного робота, а уже летом 1967 года были подведены его итоги. Мы хотели бы рассказать вам, каких роботов могли собрать в учебных заведениях и станциях юных техников того времени, посмотреть на их конструкцию и, по возможности, узнать их дальнейшую судьбу.

Читать далее
Total votes 22: ↑21 and ↓1+30
Comments57

Как передать потомкам исполняемый код? Задача сложнее, чем кажется

Level of difficultyEasy
Reading time5 min
Views11K
Стена в Мачу-Пикчу, древнем городе инков

Вы читали берестяные грамоты жителей Новгорода 11 века? Жёны писали записки мужьям типа «Не забудь в дорогу бутерброды, когда поедешь в Киев», девушки слали любовные записки, мужчины вели учёт долгов перед соседями. Но мы даже близко не можем представить, как жила эта богатая культура до завоевания Москвой.

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

И компьютеры будут другими. Практически наверняка в будущем придётся эмулировать программную и аппаратную среду современных ПК, поскольку работающие экземпляры станут редкостью, как сейчас работающие мейнфреймы 1950-х. Там будут другие процессоры на новой архитектуре, иные мониторы, ОС, софт, шрифты и т. д. Всё поменяется. Не говоря уже о том, что в худшем сценарии у потомков вообще не останется компьютеров и даже такого понятия, как «вычислительная машина».

Что же делать?
Читать дальше →
Total votes 65: ↑54 and ↓11+67
Comments99

Что есть ЮАР прямо сейчас

Reading time12 min
Views50K

Если долго, долго, долго,
Если долго по тропинке,
Если долго по дорожке
Топать, ехать и бежать,

То пожалуй, то конечно,
То наверно, верно, верно,
То возможно можно, можно,
Можно в Африку прийти!

Очень интересен тот факт, что я не вижу никаких свежих описаний ЮАР на Хабре. А зря. Возможно вам будет интересно это место. В нём есть множество недостатков, но наличествует множество достоинств. Возможно вам приглянется. За подробностями прошу под кат.

Под кат - это вот сюда вот.
Total votes 124: ↑117 and ↓7+145
Comments272

Bittorrent с нуля на Go

Reading time15 min
Views22K


BitTorrent — протокол загрузки и распространения файлов через Интернет. В отличие от традиционных отношений клиент/сервер, когда загрузчики подключаются к центральному серверу (например, для просмотра фильма на Netflix или загрузки веб-страницы), участники сети BitTorrent, называемые одноранговыми узлами, загружают фрагменты файлов друг с друга. Это то, что делает BitTorrent одноранговым протоколом. Исследуем, как он работает, и создадим собственный клиент, который сможет находить одноранговые узлы и обмениваться с ними данными.

Читать дальше →
Total votes 50: ↑47 and ↓3+53
Comments9

Гайд по созданию лженауки

Reading time7 min
Views16K

И так вы вдохновились великими Ганеманом и Хаббардом, и наконец решили создать свою лженаучную гипотезу. Не важно хотите вы славы или денег, будете продавать артефакты или книги. Начните свой путь прочитав это руководство. И не забудьте купить наш курс “Первые шаги профессионального мракобеса”. Гайд в основном направлен на новичков, мастера давно используют всё это и в советах не нуждаются. 

Читать гайд
Total votes 54: ↑51 and ↓3+66
Comments142

Вычисляем π на первом процессоре от Intel — 4004

Reading time10 min
Views18K

Как-то мне пришла в голову мысль о том, насколько же быстрее современные процессоры по сравнению с ранними экземплярами. Да, можно размышлять об этом эмпирически - зная тактовую частоту и особенности микроархитектуры (как устроен конвейер, сколько есть ALU, и т.д.), можно прикинуть производительность Intel 4004. Пусть и не в FLOPS'ах, ибо нативная поддержка чисел с плавающей запятой появилась позже. Но это будет весьма грубая прикидка, так как у этого процессора есть несколько интересных черт: разрядность только 4 бита (а не 64, как у большинства современных машин), очень скудный набор инструкций (нет даже AND'a и XOR'a!) и ограничения переферии (в частности памяти не так уж и много).

Поэтому я решил исследовать вопрос на практике. В качестве бенчмарка выбор пал на вычисления числа π. В конце-то концов, даже ENIAC в дремучем 1949 году справился с этой задачей! [2]

Читать далее
Total votes 78: ↑77 and ↓1+107
Comments25

Алгоритм HyperLogLog, или Оцениваем мощность множества за O(1)

Reading time12 min
Views13K


Привет, Хабр! Меня зовут Максим, я учусь на третьем курсе МФТИ. Этим летом я участвовал в студенческой программе, которую проводила команда Tarantool. Если кратко, суть программы в том, чтобы самостоятельно или в команде решить исследовательскую задачу в определенный срок. 

Моей задачей была реализация алгоритма HyperLogLog. Во время работы я не обнаружил русскоязычных материалов о практической реализации алгоритма, поэтому решил, что полученный мною опыт может быть полезен сообществу. Статья будет интересна людям, интересующимся алгоритмами и практическим программированием. Для понимания темы не потребуется ни специальных математических знаний, ни предварительного знакомства с алгоритмом. 
Читать дальше →
Total votes 62: ↑62 and ↓0+62
Comments40

Как стиральная машина управляет двигателем. Часть I — подключение двигателя и алгоритм стабилизации

Reading time8 min
Views55K


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

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

Электронная начинка современных бытовых приборов, особенно если речь идёт не о наколенной сборке в мастерской дядюшки Ли, а известных брендах, представляет собой чудеса оптимизации. Занимаясь ремонтом, я попутно подсматриваю достойные внимания технические решения, улыбаюсь замечая промахи проектировщиков. Временами их бывает крайне сложно объяснить чем то иным, кроме как требованиями маркетологов вносить в конструкцию элементы “планового устаревания”.

Погода на дворе не очень, очередной прототип отправляется на опытную эксплуатацию, почему бы не рассказать о чём то интересном? Давно я не писал на Хабр!
Почему двигатель, почему стиральные машины?
Ответ под катом
Total votes 90: ↑88 and ↓2+101
Comments284

Information

Rating
Does not participate
Location
Москва и Московская обл., Россия
Registered
Activity